[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36426] trunk/blender: Fix [#26981] Command window is not opening in 2.57.0

Joshua Leung aligorith at gmail.com
Mon May 2 13:06:16 CEST 2011


This seems to break compiling with mingw+scons (gcc 4.5.0), but works
fine with msvc 2008

Compiling ==> 'GHOST_SystemWin32.cpp'
intern\ghost\intern\GHOST_SystemWin32.cpp: In member function 'virtual
int GHOST_SystemWin32::toggle
Console(int)':
intern\ghost\intern\GHOST_SystemWin32.cpp:1225:32: error:
'GetConsoleWindow' was not declared in thi
s scope
scons: *** [C:\blenderdev\b250\build\intern\ghost\intern\GHOST_SystemWin32.o]
Error 1


On Mon, May 2, 2011 at 8:07 PM, Nathan Letwory
<nathan at letworyinteractive.com> wrote:
> Revision: 36426
>          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36426
> Author:   jesterking
> Date:     2011-05-02 08:07:24 +0000 (Mon, 02 May 2011)
> Log Message:
> -----------
> Fix [#26981] Command window is not opening in 2.57.0
>  Reported by Thomas Engel
> Fix [#26938] Blender Zoom not working after startup (Windows)
>  Reported by Ilija Boshkov
>
> by applying patch [#26881] Fix for console disappearing in debug mode [Windows]
>  Submitted by Alexander Kuznetsov (AlexK)
>
> The patch moves console toggling code into GHOST and improves on the toggling behaviour.
>
> The patch changes handling of WM_SYSCOMMAND so that alt-key toggling isn't a problem anymore.
>
> Modified Paths:
> --------------
>    trunk/blender/intern/ghost/GHOST_C-api.h
>    trunk/blender/intern/ghost/GHOST_ISystem.h
>    trunk/blender/intern/ghost/intern/GHOST_C-api.cpp
>    trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
>    trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h
>    trunk/blender/source/blender/blenlib/BLI_winstuff.h
>    trunk/blender/source/blender/blenlib/intern/winstuff.c
>    trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c
>    trunk/blender/source/blender/windowmanager/intern/wm_operators.c
>
> Modified: trunk/blender/intern/ghost/GHOST_C-api.h
> ===================================================================
> --- trunk/blender/intern/ghost/GHOST_C-api.h    2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/intern/ghost/GHOST_C-api.h    2011-05-02 08:07:24 UTC (rev 36426)
> @@ -845,6 +845,18 @@
>  extern void GHOST_putClipboard(GHOST_TInt8 *buffer, int selection);
>
>
> +
> +/**
> + * Toggles console
> + * @action     0 - Hides
> + *                     1 - Shows
> + *                     2 - Toggles
> + *                     3 - Hides if it runs not from  command line
> + *                     * - Does nothing
> + * @return current status (1 -visible, 0 - hidden)
> + */
> +extern int GHOST_toggleConsole(int action);
> +
>  #ifdef __cplusplus
>  }
>  #endif
>
> Modified: trunk/blender/intern/ghost/GHOST_ISystem.h
> ===================================================================
> --- trunk/blender/intern/ghost/GHOST_ISystem.h  2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/intern/ghost/GHOST_ISystem.h  2011-05-02 08:07:24 UTC (rev 36426)
> @@ -355,6 +355,16 @@
>         */
>        virtual GHOST_TSuccess getButtonState(GHOST_TButtonMask mask, bool& isDown) const = 0;
>
> +       /**
> +        * Toggles console
> +        * @action      0 - Hides
> +        *                      1 - Shows
> +        *                      2 - Toggles
> +        *                      3 - Hides if it runs not from  command line
> +        *                      * - Does nothing
> +        * @return current status (1 -visible, 0 - hidden)
> +        */
> +       virtual int toggleConsole(int action) = 0;
>
>        /***************************************************************************************
>         ** Access to clipboard.
>
> Modified: trunk/blender/intern/ghost/intern/GHOST_C-api.cpp
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_C-api.cpp   2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/intern/ghost/intern/GHOST_C-api.cpp   2011-05-02 08:07:24 UTC (rev 36426)
> @@ -877,3 +877,9 @@
>        GHOST_ISystem* system = GHOST_ISystem::getSystem();
>        system->putClipboard(buffer, selection);
>  }
> +
> +int GHOST_toggleConsole(int action)
> +{
> +       GHOST_ISystem* system = GHOST_ISystem::getSystem();
> +       return system->toggleConsole(action);
> +}
>
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp     2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp     2011-05-02 08:07:24 UTC (rev 36426)
> @@ -174,6 +174,8 @@
>        GHOST_ASSERT(m_displayManager, "GHOST_SystemWin32::GHOST_SystemWin32(): m_displayManager==0\n");
>        m_displayManager->initialize();
>
> +       m_consoleStatus = 1;
> +
>        // Check if current keyboard layout uses AltGr and save keylayout ID for
>        // specialized handling if keys like VK_OEM_*. I.e. french keylayout
>        // generates VK_OEM_8 for their exclamation key (key left of right shift)
> @@ -186,6 +188,7 @@
>  {
>        // Shutdown COM
>        OleUninitialize();
> +       toggleConsole(1);
>  }
>
>
> @@ -847,7 +850,14 @@
>                                         * a dead key that is pressed while holding down the alt key.
>                                         * To prevent the sound, DefWindowProc must be avoided by return
>                                         */
> -                                       return 0;
> +                                       break;
> +                               case WM_SYSCOMMAND:
> +                                       /* The WM_SYSCHAR message is sent to the window when system commands such as
> +                                        * maximize, minimize  or close the window are triggered. Also it is sent when ALT
> +                                        * button is press for menu. To prevent this we must return preventing DefWindowProc.
> +                                        */
> +                                       if(wParam==SC_KEYMENU) return 0;
> +                                       break;
>                                ////////////////////////////////////////////////////////////////////////
>                                // Tablet events, processed
>                                ////////////////////////////////////////////////////////////////////////
> @@ -1047,8 +1057,12 @@
>                                         * DestroyWindow function sends the WM_NCDESTROY message to the window following the WM_DESTROY
>                                         * message. WM_DESTROY is used to free the allocated memory object associated with the window.
>                                         */
> +                                       break;
>                                case WM_KILLFOCUS:
> -                                       /* The WM_KILLFOCUS message is sent to a window immediately before it loses the keyboard focus. */
> +                                       /* The WM_KILLFOCUS message is sent to a window immediately before it loses the keyboard focus.
> +                                        * We want to prevent this if a window is still active and it loses focus to nowhere*/
> +                                       if(!wParam && hwnd==GetActiveWindow())
> +                                               SetFocus(hwnd);
>                                case WM_SHOWWINDOW:
>                                        /* The WM_SHOWWINDOW message is sent to a window when the window is about to be hidden or shown. */
>                                case WM_WINDOWPOSCHANGING:
> @@ -1196,3 +1210,32 @@
>                return;
>        }
>  }
> +
> +int GHOST_SystemWin32::toggleConsole(int action)
> +{
> +       switch(action)
> +       {
> +               case 3: //hide if no console
> +                       {
> +                       CONSOLE_SCREEN_BUFFER_INFO csbi = {{0}};
> +                       if(!GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi) || csbi.dwCursorPosition.X || csbi.dwCursorPosition.Y>1)
> +                               break;
> +                       }
> +               case 0: //hide
> +                       ShowWindow(GetConsoleWindow(),SW_HIDE);
> +                       m_consoleStatus = 0;
> +                       break;
> +               case 1: //show
> +                       ShowWindow(GetConsoleWindow(),SW_SHOW);
> +                       m_consoleStatus = 1;
> +                       break;
> +               case 2: //toggle
> +                       ShowWindow(GetConsoleWindow(),m_consoleStatus?SW_HIDE:SW_SHOW);
> +                       m_consoleStatus=!m_consoleStatus;
> +                       break;
> +
> +       };
> +
> +
> +       return m_consoleStatus;
> +}
>
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h       2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h       2011-05-02 08:07:24 UTC (rev 36426)
> @@ -415,6 +415,17 @@
>         * Initiates WM_INPUT messages from keyboard
>         */
>        GHOST_TInt32 initKeyboardRawInput(void);
> +
> +       /**
> + * Toggles console
> + * @action     0 - Hides
> + *                     1 - Shows
> + *                     2 - Toggles
> + *                     3 - Hides if it runs not from  command line
> + *                     * - Does nothing
> + * @return current status (1 -visible, 0 - hidden)
> + */
> +       int toggleConsole(int action);
>
>        /** The current state of the modifier keys. */
>        GHOST_ModifierKeys m_modifierKeys;
> @@ -431,6 +442,9 @@
>        /** stores keyboard layout. */
>        HKL m_keylayout;
>
> +       /** Console status */
> +       int m_consoleStatus;
> +
>        /** handle for user32.dll*/
>        HMODULE user32;
>        #ifdef NEED_RAW_PROC
> @@ -471,6 +485,5 @@
>                }
>        }
>  }
> -
>  #endif // _GHOST_SYSTEM_WIN32_H_
>
>
> Modified: trunk/blender/source/blender/blenlib/BLI_winstuff.h
> ===================================================================
> --- trunk/blender/source/blender/blenlib/BLI_winstuff.h 2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/source/blender/blenlib/BLI_winstuff.h 2011-05-02 08:07:24 UTC (rev 36426)
> @@ -127,7 +127,6 @@
>        struct dirent direntry;
>  } DIR;
>
> -int IsConsoleEmpty(void);
>  void RegisterBlendExtension(void);
>  DIR *opendir (const char *path);
>  struct dirent *readdir(DIR *dp);
>
> Modified: trunk/blender/source/blender/blenlib/intern/winstuff.c
> ===================================================================
> --- trunk/blender/source/blender/blenlib/intern/winstuff.c      2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/source/blender/blenlib/intern/winstuff.c      2011-05-02 08:07:24 UTC (rev 36426)
> @@ -66,14 +66,6 @@
>        return 1;
>  }
>
> -int IsConsoleEmpty(void)
> -{
> -       CONSOLE_SCREEN_BUFFER_INFO csbi = {{0}};
> -       HANDLE hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
> -
> -       return GetConsoleScreenBufferInfo(hStdOutput, &csbi) && csbi.dwCursorPosition.X == 0 && csbi.dwCursorPosition.Y == 0;
> -}
> -
>  void RegisterBlendExtension_Fail(HKEY root)
>  {
>        printf("failed\n");
>
> Modified: trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c
> ===================================================================
> --- trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c    2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c    2011-05-02 08:07:24 UTC (rev 36426)
> @@ -75,6 +75,7 @@
>  #include "SYS_System.h"
>  #endif
>  #include "GHOST_Path-api.h"
> +#include "GHOST_C-api.h"
>
>  #include "RNA_define.h"
>
> @@ -104,7 +105,6 @@
>
>  #include "BKE_depsgraph.h"
>  #include "BKE_sound.h"
> -#include "GHOST_C-api.h"
>
>  static void wm_init_reports(bContext *C)
>  {
> @@ -120,17 +120,11 @@
>  /* only called once, for startup */
>  void WM_init(bContext *C, int argc, const char **argv)
>  {
> -
>        if (!G.background) {
>                wm_ghost_init(C);       /* note: it assigns C to ghost! */
>                wm_init_cursor_data();
> -#ifdef WIN32
> -               if (IsConsoleEmpty()) /* never hide if the console window pre-existed */
> -                       WM_console_toggle(C, wm_start_with_console);
> -#endif
>        }
>        GHOST_CreateSystemPaths();
> -
>        wm_operatortype_init();
>
>        set_free_windowmanager_cb(wm_close_and_free);   /* library.c */
> @@ -144,7 +138,6 @@
>
>        BLF_init(11, U.dpi); /* Please update source/gamengine/GamePlayer/GPG_ghost.cpp if you change this */
>        BLF_lang_init();
> -
>        /* get the default database, plus a wm */
>        WM_read_homefile(C, NULL, G.factory_startup);
>
> @@ -167,6 +160,9 @@
>        (void)argv; /* unused */
>  #endif
>
> +       if (!G.background && !wm_start_with_console)
> +               GHOST_toggleConsole(3);
> +
>        wm_init_reports(C); /* reports cant be initialized before the wm */
>
>        if (!G.background) {
> @@ -194,7 +190,6 @@
>        */
>
>        BLI_strncpy(G.lib, G.main->name, FILE_MAX);
> -
>  }
>
>  void WM_init_splash(bContext *C)
> @@ -357,9 +352,6 @@
>
>        sound_exit();
>
> -#ifdef WIN32
> -       WM_console_toggle(C, 1); /* never leave behind invisible consoles */
> -#endif
>
>        /* first wrap up running stuff, we assume only the active WM is running */
>        /* modal handlers are on window level freed, others too? */
> @@ -481,7 +473,6 @@
>                getchar();
>        }
>  #endif
> -
>        exit(G.afbreek==1);
>  }
>
>
> Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
> ===================================================================
> --- trunk/blender/source/blender/windowmanager/intern/wm_operators.c    2011-05-02 08:04:05 UTC (rev 36425)
> +++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c    2011-05-02 08:07:24 UTC (rev 36426)
> @@ -38,13 +38,8 @@
>  #include <stddef.h>
>  #include <assert.h>
>
> -#ifdef WIN32
> -#include "BLI_winstuff.h"
> -#include <windows.h>
> +#include "GHOST_C-api.h"
>
> -#include <io.h>
> -#endif
> -
>  #include "MEM_guardedalloc.h"
>
>  #include "DNA_ID.h"
> @@ -2001,7 +1996,6 @@
>  #endif
>
>
> -
>  /* *********************** */
>
>  static void WM_OT_window_fullscreen_toggle(wmOperatorType *ot)
> @@ -2035,28 +2029,10 @@
>  }
>
>  /* *********************** */
> -#if defined(WIN32)
> -static int console= 1;
> -void WM_console_toggle(bContext *UNUSED(C), short show)
> -{
> -       if(show) {
> -               ShowWindow(GetConsoleWindow(),SW_SHOW);
> -               console= 1;
> -       }
> -       else {
> -               ShowWindow(GetConsoleWindow(),SW_HIDE);
> -               console= 0;
> -       }
> -}
>
>  static int wm_console_toggle_op(bContext *C, wmOperator *UNUSED(op))
>  {
> -       if(console) {
> -               WM_console_toggle(C, 0);
> -       }
> -       else {
>
> @@ Diff output truncated at 10240 characters. @@
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>


More information about the Bf-committers mailing list