[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

Alexander Kuznetso kuzsasha at gmail.com
Mon May 2 15:55:21 CEST 2011


Winenv seems to be missing ghost_systemwin32.h

Adding this in header should fix it

#ifdef FREE_WINDOWS 
#ifdef WINVER 
#undef WINVER 
#endif  
/* Some stuff requires WINVER 0x500, but mingw's default is 0x400 */ 
#define WINVER 0x0501 
#endif

But I cannot test it right now. 



Sent from my phone

On May 2, 2011, at 7:06 AM, Joshua Leung <aligorith at gmail.com> wrote:

> 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
>> 
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers


More information about the Bf-committers mailing list