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 <[email protected]> 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 > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
