[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