Hi Nathan, this commit broke building with WinSDK/Nmake/JOM on Win7.
Here's the error message: [ 80%] Building CXX object intern/ghost/CMakeFiles/bf_intern_ghost.dir/intern/GHOST_SystemWin32.cpp.obj GHOST_SystemWin32.cpp W:\ralf\Stuff\b\blender\intern\ghost\intern\GHOST_SystemWin32.cpp(473) : error C2220: warning treated as error - no 'object' file generated W:\ralf\Stuff\b\blender\intern\ghost\intern\GHOST_SystemWin32.cpp(473) : warning C4805: '!=' : unsafe mix of type 'bool' and type 'int' in operation W:\ralf\Stuff\b\blender\intern\ghost\intern\GHOST_SystemWin32.cpp(479) : warning C4805: '!=' : unsafe mix of type 'bool' and type 'int' in operation W:\ralf\Stuff\b\blender\intern\ghost\intern\GHOST_SystemWin32.cpp(485) : warning C4805: '!=' : unsafe mix of type 'bool' and type 'int' in operation W:\ralf\Stuff\b\blender\intern\ghost\intern\GHOST_SystemWin32.cpp(491) : warning C4805: '!=' : unsafe mix of type 'bool' and type 'int' in operation W:\ralf\Stuff\b\blender\intern\ghost\intern\GHOST_SystemWin32.cpp(497) : warning C4805: '!=' : unsafe mix of type 'bool' and type 'int' in operation W:\ralf\Stuff\b\blender\intern\ghost\intern\GHOST_SystemWin32.cpp(503) : warning C4805: '!=' : unsafe mix of type 'bool' and type 'int' in operation NMAKE : fatal error U1077: '"C:\PROGRA~2\Microsoft Visual Studio 9.0\VC\bin\amd64\cl.exe"' : return code '0x2' The patch at http://www.pasteall.org/19830/diff fixed the issue for me. 2011/3/10 Nathan Letwory <nat...@letworyinteractive.com>: > Revision: 35457 > > http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35457 > Author: jesterking > Date: 2011-03-10 18:56:19 +0000 (Thu, 10 Mar 2011) > Log Message: > ----------- > Fix [#26446] Quick extrude (Ctrl+LMB) works only one time > Reported by Michael R > > This was one thing I didn't test when accepting patch [#26364]. It is > important to not > send repeats of modifier keys. > > Modified Paths: > -------------- > trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp > trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h > > Modified: trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp > =================================================================== > --- trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp 2011-03-10 > 18:17:20 UTC (rev 35456) > +++ trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp 2011-03-10 > 18:56:19 UTC (rev 35457) > @@ -454,8 +454,71 @@ > > if (ri.header.dwType == RIM_TYPEKEYBOARD) > { > + GHOST_SystemWin32 *system = (GHOST_SystemWin32 > *)getSystem(); > + > + GHOST_ModifierKeys modifiers; > + system->retrieveModifierKeys(modifiers); > + > *keyDown = !(ri.data.keyboard.Flags & RI_KEY_BREAK); > key = this->convertKey(window, ri.data.keyboard.VKey, > ri.data.keyboard.MakeCode, (ri.data.keyboard.Flags&(RI_KEY_E1|RI_KEY_E0))); > + > + // extra handling of modifier keys: don't send > repeats out from GHOST > + if(key >= GHOST_kKeyLeftShift && key <= > GHOST_kKeyRightAlt) > + { > + bool changed = false; > + GHOST_TModifierKeyMask modifier; > + switch(key) { > + case GHOST_kKeyLeftShift: > + { > + changed = > (modifiers.get(GHOST_kModifierKeyLeftShift) != *keyDown); > + modifier = > GHOST_kModifierKeyLeftShift; > + } > + break; > + case GHOST_kKeyRightShift: > + { > + changed = > (modifiers.get(GHOST_kModifierKeyRightShift) != *keyDown); > + modifier = > GHOST_kModifierKeyRightShift; > + } > + break; > + case GHOST_kKeyLeftControl: > + { > + changed = > (modifiers.get(GHOST_kModifierKeyLeftControl) != *keyDown); > + modifier = > GHOST_kModifierKeyLeftControl; > + } > + break; > + case GHOST_kKeyRightControl: > + { > + changed = > (modifiers.get(GHOST_kModifierKeyRightControl) != *keyDown); > + modifier = > GHOST_kModifierKeyRightControl; > + } > + break; > + case GHOST_kKeyLeftAlt: > + { > + changed = > (modifiers.get(GHOST_kModifierKeyLeftAlt) != *keyDown); > + modifier = > GHOST_kModifierKeyLeftAlt; > + } > + break; > + case GHOST_kKeyRightAlt: > + { > + changed = > (modifiers.get(GHOST_kModifierKeyRightAlt) != *keyDown); > + modifier = > GHOST_kModifierKeyRightAlt; > + } > + break; > + default: break; > + } > + > + if(changed) > + { > + modifiers.set(modifier, *keyDown); > + system->storeModifierKeys(modifiers); > + } > + else > + { > + key = GHOST_kKeyUnknown; > + } > + } > + > + > if(vk) *vk = ri.data.keyboard.VKey; > }; > > @@ -586,6 +649,7 @@ > break; > } > } > + > return key; > } > > > Modified: trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h > =================================================================== > --- trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h 2011-03-10 > 18:17:20 UTC (rev 35456) > +++ trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h 2011-03-10 > 18:56:19 UTC (rev 35457) > @@ -322,6 +322,14 @@ > */ > virtual GHOST_TKey hardKey(GHOST_IWindow *window, WPARAM wParam, > LPARAM lParam, int * keyDown, char * vk); > > + /** > + * Creates modifier key event(s) and updates the key data stored > locally (m_modifierKeys). > + * With the modifier keys, we want to distinguish left and right keys. > + * Sometimes this is not possible (Windows ME for instance). Then, we > want > + * events generated for both keys. > + * @param window The window receiving the event (the active > window). > + */ > + GHOST_EventKey* processModifierKeys(GHOST_IWindow *window); > > /** > * Creates mouse button event. > @@ -381,6 +389,19 @@ > static void processMinMaxInfo(MINMAXINFO * minmax); > > /** > + * Returns the local state of the modifier keys (from the message > queue). > + * @param keys The state of the keys. > + */ > + inline virtual void retrieveModifierKeys(GHOST_ModifierKeys& keys) > const; > + > + /** > + * Stores the state of the modifier keys locally. > + * For internal use only! > + * @param keys The new state of the modifier keys. > + */ > + inline virtual void storeModifierKeys(const GHOST_ModifierKeys& keys); > + > + /** > * Check current key layout for AltGr > */ > inline virtual void handleKeyboardChange(void); > @@ -394,7 +415,9 @@ > * Initiates WM_INPUT messages from keyboard > */ > GHOST_TInt32 initKeyboardRawInput(void); > - > + > + /** The current state of the modifier keys. */ > + GHOST_ModifierKeys m_modifierKeys; > /** State variable set at initialization. */ > bool m_hasPerformanceCounter; > /** High frequency timer variable. */ > @@ -418,6 +441,16 @@ > #endif > }; > > +inline void GHOST_SystemWin32::retrieveModifierKeys(GHOST_ModifierKeys& > keys) const > +{ > + keys = m_modifierKeys; > +} > + > +inline void GHOST_SystemWin32::storeModifierKeys(const GHOST_ModifierKeys& > keys) > +{ > + m_modifierKeys = keys; > +} > + > inline void GHOST_SystemWin32::handleKeyboardChange(void) > { > m_keylayout = GetKeyboardLayout(0); // get keylayout for current thread > > _______________________________________________ > Bf-blender-cvs mailing list > bf-blender-...@blender.org > http://lists.blender.org/mailman/listinfo/bf-blender-cvs > _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers