[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