From: <dc...@us...> - 2014-01-24 10:27:11
|
Revision: 1653 http://sourceforge.net/p/freeglut/code/1653 Author: dcnieho Date: 2014-01-24 10:27:08 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Added a couple event cases for BlackBerry that are common to prevent them being listed as unknown events. Modified Paths: -------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:26:52 UTC (rev 1652) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:27:08 UTC (rev 1653) @@ -32,8 +32,8 @@ #include "egl/fg_window_egl.h" #include <slog2.h> -#define LOGI(...) ((void)slog2fa(NULL, 1337, SLOG2_INFO, __VA_ARGS__)) -#define LOGW(...) ((void)slog2fa(NULL, 1337, SLOG2_WARNING, __VA_ARGS__)) +#define LOGI(...) ((void)slog2fa(NULL, 1337, SLOG2_INFO, __VA_ARGS__, SLOG2_FA_END)) +#define LOGW(...) ((void)slog2fa(NULL, 1337, SLOG2_WARNING, __VA_ARGS__, SLOG2_FA_END)) #include <sys/keycodes.h> #include <input/screen_helpers.h> #include <bps/bps.h> @@ -283,7 +283,7 @@ { mtouch_event_t touchEvent; screen_get_mtouch_event(screenEvent, &touchEvent, 0); - LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_MTOUCH_*: Type: 0x%X, X: %d, Y: %d, Contact Id: %d", SLOG2_FA_SIGNED(eventType), SLOG2_FA_SIGNED(touchEvent.x), SLOG2_FA_SIGNED(touchEvent.y), SLOG2_FA_SIGNED(touchEvent.contact_id), SLOG2_FA_END); + LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_MTOUCH_*: Type: 0x%X, X: %d, Y: %d, Contact Id: %d", SLOG2_FA_SIGNED(eventType), SLOG2_FA_SIGNED(touchEvent.x), SLOG2_FA_SIGNED(touchEvent.y), SLOG2_FA_SIGNED(touchEvent.contact_id)); if(touchEvent.contact_id == 0) { int size[2]; screen_get_window_property_iv(window->Window.Handle, SCREEN_PROPERTY_BUFFER_SIZE, size); @@ -321,7 +321,7 @@ int size[2]; screen_get_window_property_iv(window->Window.Handle, SCREEN_PROPERTY_BUFFER_SIZE, size); - LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_POINTER: Buttons: 0x%X, X: %d, Y: %d, Wheel: %d", SLOG2_FA_SIGNED(buttons), SLOG2_FA_SIGNED(position[0]), SLOG2_FA_SIGNED(position[1]), SLOG2_FA_SIGNED(wheel), SLOG2_FA_END); + LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_POINTER: Buttons: 0x%X, X: %d, Y: %d, Wheel: %d", SLOG2_FA_SIGNED(buttons), SLOG2_FA_SIGNED(position[0]), SLOG2_FA_SIGNED(position[1]), SLOG2_FA_SIGNED(wheel)); //XXX Should multitouch be handled? @@ -385,7 +385,7 @@ int value; screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_KEY_FLAGS, &flags); screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_KEY_SYM, &value); - LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_KEYBOARD. Flags: 0x%X, Sym: 0x%X", SLOG2_FA_SIGNED(flags), SLOG2_FA_SIGNED(value), SLOG2_FA_END); + LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_KEYBOARD. Flags: 0x%X, Sym: 0x%X", SLOG2_FA_SIGNED(flags), SLOG2_FA_SIGNED(value)); // Suppress key repeats if desired if ((flags & KEY_REPEAT) == 0 || (fgState.KeyRepeat == GLUT_KEY_REPEAT_ON && !fgStructure.CurrentWindow->State.IgnoreKeyRepeat)) { unsigned int keypress = 0; @@ -407,8 +407,12 @@ break; } + case SCREEN_EVENT_PROPERTY: + case SCREEN_EVENT_IDLE: + break; + default: - LOGW("fgPlatformProcessSingleEvent: unknown screen event: 0x%X", SLOG2_FA_SIGNED(eventType), SLOG2_FA_END); + LOGW("fgPlatformProcessSingleEvent: unknown screen event: 0x%X", SLOG2_FA_SIGNED(eventType)); break; } } else if (domain == navigator_get_domain()) { @@ -417,41 +421,51 @@ case NAVIGATOR_WINDOW_STATE: { - LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE", SLOG2_FA_END); + LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE"); navigator_window_state_t state = navigator_event_get_window_state(event); switch (state) { case NAVIGATOR_WINDOW_FULLSCREEN: - LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_FULLSCREEN", SLOG2_FA_END); + LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_FULLSCREEN"); INVOKE_WCB(*window, AppStatus, (GLUT_APPSTATUS_RESUME)); break; case NAVIGATOR_WINDOW_THUMBNAIL: case NAVIGATOR_WINDOW_INVISIBLE: - LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_THUMBNAIL/NAVIGATOR_WINDOW_INVISIBLE", SLOG2_FA_END); + LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_THUMBNAIL/NAVIGATOR_WINDOW_INVISIBLE"); INVOKE_WCB(*window, AppStatus, (GLUT_APPSTATUS_PAUSE)); break; default: - LOGW("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE unknown: 0x%X", SLOG2_FA_SIGNED(state), SLOG2_FA_END); + LOGW("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE unknown: 0x%X", SLOG2_FA_SIGNED(state)); break; } break; } case NAVIGATOR_EXIT: - LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_EXIT", SLOG2_FA_END); + LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_EXIT"); /* User closed the application for good, let's kill the window */ { SFG_Window* window = fgStructure.CurrentWindow; if (window != NULL) { fgDestroyWindow(window); } else { - LOGW("NAVIGATOR_EXIT: No current window", SLOG2_FA_END); + LOGW("NAVIGATOR_EXIT: No current window"); } } break; + case NAVIGATOR_SWIPE_DOWN: + case NAVIGATOR_BACK: + case NAVIGATOR_WINDOW_ACTIVE: + case NAVIGATOR_DEVICE_LOCK_STATE: + case NAVIGATOR_WINDOW_COVER: + case NAVIGATOR_WINDOW_COVER_ENTER: + case NAVIGATOR_WINDOW_COVER_EXIT: + //XXX Should probably do something with these + break; + default: - LOGW("fgPlatformProcessSingleEvent: unknown navigator event: 0x%X", SLOG2_FA_SIGNED(eventType), SLOG2_FA_END); + LOGW("fgPlatformProcessSingleEvent: unknown navigator event: 0x%X", SLOG2_FA_SIGNED(eventType)); break; } } @@ -464,7 +478,7 @@ void fgPlatformMainLoopPreliminaryWork ( void ) { - LOGI("fgPlatformMainLoopPreliminaryWork\n", SLOG2_FA_END); + LOGI("fgPlatformMainLoopPreliminaryWork"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:28:17
|
Revision: 1657 http://sourceforge.net/p/freeglut/code/1657 Author: dcnieho Date: 2014-01-24 10:28:14 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Added two more navigator states (that might be implemented) for BlackBerry Modified Paths: -------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:27:59 UTC (rev 1656) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:28:14 UTC (rev 1657) @@ -457,10 +457,12 @@ case NAVIGATOR_SWIPE_DOWN: case NAVIGATOR_BACK: case NAVIGATOR_WINDOW_ACTIVE: + case NAVIGATOR_WINDOW_INACTIVE: case NAVIGATOR_DEVICE_LOCK_STATE: case NAVIGATOR_WINDOW_COVER: case NAVIGATOR_WINDOW_COVER_ENTER: case NAVIGATOR_WINDOW_COVER_EXIT: + case NAVIGATOR_APP_STATE: //XXX Should probably do something with these break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:28:32
|
Revision: 1658 http://sourceforge.net/p/freeglut/code/1658 Author: dcnieho Date: 2014-01-24 10:28:29 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Added keyboard states for BlackBerry Modified Paths: -------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:28:14 UTC (rev 1657) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:28:29 UTC (rev 1658) @@ -458,6 +458,8 @@ case NAVIGATOR_BACK: case NAVIGATOR_WINDOW_ACTIVE: case NAVIGATOR_WINDOW_INACTIVE: + case NAVIGATOR_KEYBOARD_STATE: + case NAVIGATOR_KEYBOARD_POSITION: case NAVIGATOR_DEVICE_LOCK_STATE: case NAVIGATOR_WINDOW_COVER: case NAVIGATOR_WINDOW_COVER_ENTER: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:29:33
|
Revision: 1662 http://sourceforge.net/p/freeglut/code/1662 Author: dcnieho Date: 2014-01-24 10:29:30 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Added support for key modifiers Modified Paths: -------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:29:17 UTC (rev 1661) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:29:30 UTC (rev 1662) @@ -254,6 +254,16 @@ } } +/* + * Determine a GLUT modifier mask based on BlackBerry modifier info. + */ +int fgPlatformGetModifiers (int mod) +{ + return (((mod & KEYMOD_SHIFT) ? GLUT_ACTIVE_SHIFT : 0) | + ((mod & KEYMOD_CTRL) ? GLUT_ACTIVE_CTRL : 0) | + ((mod & KEYMOD_ALT) ? GLUT_ACTIVE_ALT : 0)); +} + void fgPlatformProcessSingleEvent ( void ) { int domain; @@ -270,6 +280,7 @@ domain = bps_event_get_domain(fgDisplay.pDisplay.event); if (domain == screen_get_domain()) { int eventType; + int mod; screen_event_t screenEvent = screen_event_get_event(fgDisplay.pDisplay.event); screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_TYPE, &eventType); switch (eventType) { @@ -281,7 +292,13 @@ { mtouch_event_t touchEvent; screen_get_mtouch_event(screenEvent, &touchEvent, 0); - LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_MTOUCH_*: Type: 0x%X, X: %d, Y: %d, Contact Id: %d", SLOG2_FA_SIGNED(eventType), SLOG2_FA_SIGNED(touchEvent.x), SLOG2_FA_SIGNED(touchEvent.y), SLOG2_FA_SIGNED(touchEvent.contact_id)); + screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_KEY_MODIFIERS, &mod); + + LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_MTOUCH_*: Type: 0x%X, X: %d, Y: %d, Contact Id: %d, Mod: 0x%X", SLOG2_FA_SIGNED(eventType), SLOG2_FA_SIGNED(touchEvent.x), SLOG2_FA_SIGNED(touchEvent.y), SLOG2_FA_SIGNED(touchEvent.contact_id), SLOG2_FA_SIGNED(mod)); + + /* Remember the current modifiers state so user can query it from their callback */ + fgState.Modifiers = fgPlatformGetModifiers(mod); + if(touchEvent.contact_id == 0) { int size[2]; screen_get_window_property_iv(window->Window.Handle, SCREEN_PROPERTY_BUFFER_SIZE, size); @@ -316,13 +333,17 @@ screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_BUTTONS, &buttons); screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_SOURCE_POSITION, position); screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_MOUSE_WHEEL, &wheel); + screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_KEY_MODIFIERS, &mod); int size[2]; screen_get_window_property_iv(window->Window.Handle, SCREEN_PROPERTY_BUFFER_SIZE, size); - LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_POINTER: Buttons: 0x%X, X: %d, Y: %d, Wheel: %d", SLOG2_FA_SIGNED(buttons), SLOG2_FA_SIGNED(position[0]), SLOG2_FA_SIGNED(position[1]), SLOG2_FA_SIGNED(wheel)); + LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_POINTER: Buttons: 0x%X, X: %d, Y: %d, Wheel: %d, Mod: 0x%X", SLOG2_FA_SIGNED(buttons), SLOG2_FA_SIGNED(position[0]), SLOG2_FA_SIGNED(position[1]), SLOG2_FA_SIGNED(wheel), SLOG2_FA_SIGNED(mod)); //XXX Should multitouch be handled? + /* Remember the current modifiers state so user can query it from their callback */ + fgState.Modifiers = fgPlatformGetModifiers(mod); + // Handle left mouse. Interpret as touch if the left mouse event is not consumed. if (buttons & SCREEN_LEFT_MOUSE_BUTTON) { if (mouse_pressed & SCREEN_LEFT_MOUSE_BUTTON) { @@ -383,11 +404,19 @@ int value; screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_KEY_FLAGS, &flags); screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_KEY_SYM, &value); - LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_KEYBOARD. Flags: 0x%X, Sym: 0x%X", SLOG2_FA_SIGNED(flags), SLOG2_FA_SIGNED(value)); - // Suppress key repeats if desired - if ((flags & KEY_REPEAT) == 0 || (fgState.KeyRepeat == GLUT_KEY_REPEAT_ON && !fgStructure.CurrentWindow->State.IgnoreKeyRepeat)) { + screen_get_event_property_iv(screenEvent, SCREEN_PROPERTY_KEY_MODIFIERS, &mod); + + LOGI("fgPlatformProcessSingleEvent: SCREEN_EVENT_KEYBOARD. Flags: 0x%X, Sym: 0x%X, Mod: 0x%X", SLOG2_FA_SIGNED(flags), SLOG2_FA_SIGNED(value), SLOG2_FA_SIGNED(mod)); + + /* Suppress key repeats if desired. Based off fg_main_mswin */ + if ((flags & KEY_REPEAT) == 0 || (fgState.KeyRepeat == GLUT_KEY_REPEAT_OFF && fgStructure.CurrentWindow->State.IgnoreKeyRepeat == GL_TRUE)) { unsigned int keypress = 0; unsigned char ascii = 0; + + /* Remember the current modifiers state so user can query it from their callback */ + fgState.Modifiers = fgPlatformGetModifiers(mod); + + /* Process keys */ if ((keypress = key_special(value))) { if(flags & KEY_DOWN) { INVOKE_WCB(*window, Special, (keypress, window->State.MouseX, window->State.MouseY)); @@ -400,6 +429,8 @@ } else { INVOKE_WCB(*window, KeyboardUp, (ascii, window->State.MouseX, window->State.MouseY)); } + } else { + LOGW("fgPlatformProcessSingleEvent: SCREEN_EVENT_KEYBOARD. Unhandled key event"); } } break; @@ -487,7 +518,7 @@ /* Request navigator events */ navigator_request_events(0); - //XXX rotation lock? navigator_rotation_lock(true); + //XXX rotation lock? navigator_rotation_lock(true); /* Request window events */ screen_request_events(fgDisplay.pDisplay.screenContext); @@ -495,11 +526,11 @@ void fgPlatformMainLoopPostWork ( void ) { - LOGI("fgPlatformMainLoopPostWork"); + LOGI("fgPlatformMainLoopPostWork"); - screen_stop_events(fgDisplay.pDisplay.screenContext); + screen_stop_events(fgDisplay.pDisplay.screenContext); - navigator_stop_events(0); + navigator_stop_events(0); } /* deal with work list items */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:29:46
|
Revision: 1663 http://sourceforge.net/p/freeglut/code/1663 Author: dcnieho Date: 2014-01-24 10:29:44 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Forgot to reset modifiers once done with modifiers. Modified Paths: -------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:29:30 UTC (rev 1662) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:29:44 UTC (rev 1663) @@ -316,6 +316,8 @@ INVOKE_WCB( *window, MultiButton, ( touchEvent.contact_id, touchEvent.x, touchEvent.y, 0, GLUT_UP ) ); INVOKE_WCB( *window, MultiEntry, ( touchEvent.contact_id, GLUT_LEFT ) ); } + + fgState.Modifiers = INVALID_MODIFIERS; break; } @@ -394,6 +396,8 @@ fgState.MouseWheelTicks -= wheel; //TODO: Implement wheel support (based on fg_main_mswin... though it seems excessive) } + + fgState.Modifiers = INVALID_MODIFIERS; break; } @@ -432,6 +436,8 @@ } else { LOGW("fgPlatformProcessSingleEvent: SCREEN_EVENT_KEYBOARD. Unhandled key event"); } + + fgState.Modifiers = INVALID_MODIFIERS; } break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:32:41
|
Revision: 1665 http://sourceforge.net/p/freeglut/code/1665 Author: dcnieho Date: 2014-01-24 10:32:39 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Implemented a small work around for no current window being set while executing the event handler Modified Paths: -------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:29:59 UTC (rev 1664) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:32:39 UTC (rev 1665) @@ -161,7 +161,7 @@ void fgPlatformSleepForEvents( fg_time_t msec ) { //XXX: Is this right? Is there a more direct way to access the context? - if(fgStructure.CurrentWindow && bps_get_event(&fgDisplay.pDisplay.event, (int)msec) != BPS_SUCCESS) { + if(fgStructure.CurrentWindow && fgDisplay.pDisplay.event == NULL && bps_get_event(&fgDisplay.pDisplay.event, (int)msec) != BPS_SUCCESS) { LOGW("BPS couldn't get event"); } } @@ -266,12 +266,17 @@ void fgPlatformProcessSingleEvent ( void ) { + if(fgStructure.CurrentWindow == NULL) + //XXX Is this right? Would this just cause a whole lot of busy looping while we wait for events? + LOGW("fgPlatformProcessSingleEvent: Missing current window. Skipping event processing"); + return; + int domain; do { if(fgDisplay.pDisplay.event != NULL) { SFG_Window* window = fgStructure.CurrentWindow; - if (window != NULL && window->Window.Handle != NULL) { + if (window->Window.Handle != NULL) { int size[2]; screen_get_window_property_iv(window->Window.Handle, SCREEN_PROPERTY_BUFFER_SIZE, size); fghOnReshapeNotify(window,size[0],size[1],GL_FALSE); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:32:55
|
Revision: 1666 http://sourceforge.net/p/freeglut/code/1666 Author: dcnieho Date: 2014-01-24 10:32:52 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Fixed bug where if statement didn't have parenthesis, causing it to just exit Modified Paths: -------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:32:39 UTC (rev 1665) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:32:52 UTC (rev 1666) @@ -266,10 +266,11 @@ void fgPlatformProcessSingleEvent ( void ) { - if(fgStructure.CurrentWindow == NULL) + if(fgStructure.CurrentWindow == NULL) { //XXX Is this right? Would this just cause a whole lot of busy looping while we wait for events? - LOGW("fgPlatformProcessSingleEvent: Missing current window. Skipping event processing"); + LOGW("fgPlatformProcessSingleEvent: Missing current window. Skipping event processing"); return; + } int domain; do This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:33:10
|
Revision: 1667 http://sourceforge.net/p/freeglut/code/1667 Author: dcnieho Date: 2014-01-24 10:33:07 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Added full support for WindowStatus App status is now based on actual app status instead of window visibility Modified Paths: -------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:32:52 UTC (rev 1666) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:33:07 UTC (rev 1667) @@ -506,12 +506,18 @@ { case NAVIGATOR_WINDOW_FULLSCREEN: LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_FULLSCREEN"); - INVOKE_WCB(*window, AppStatus, (GLUT_APPSTATUS_RESUME)); + window->State.Visible = GL_TRUE; + INVOKE_WCB(*window, WindowStatus, (GLUT_FULLY_RETAINED)); break; case NAVIGATOR_WINDOW_THUMBNAIL: + LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_THUMBNAIL"); + window->State.Visible = GL_TRUE; + INVOKE_WCB(*window, WindowStatus, (GLUT_PARTIALLY_RETAINED)); + break; case NAVIGATOR_WINDOW_INVISIBLE: - LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_THUMBNAIL/NAVIGATOR_WINDOW_INVISIBLE"); - INVOKE_WCB(*window, AppStatus, (GLUT_APPSTATUS_PAUSE)); + LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_INVISIBLE"); + window->State.Visible = GL_FALSE; + INVOKE_WCB(*window, WindowStatus, (GLUT_HIDDEN)); //XXX Should this be GLUT_FULLY_COVERED? break; default: LOGW("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE unknown: 0x%X", SLOG2_FA_SIGNED(state)); @@ -537,17 +543,40 @@ } case NAVIGATOR_SWIPE_DOWN: + /* XXX Open app menu */ + break; + case NAVIGATOR_BACK: + /* XXX Should this be a Special/SpecialUp event? */ + break; + case NAVIGATOR_WINDOW_ACTIVE: + LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_ACTIVE"); + INVOKE_WCB(*window, AppStatus, (GLUT_APPSTATUS_RESUME)); + break; + case NAVIGATOR_WINDOW_INACTIVE: + LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_INACTIVE"); + INVOKE_WCB(*window, AppStatus, (GLUT_APPSTATUS_PAUSE)); + break; + case NAVIGATOR_KEYBOARD_STATE: case NAVIGATOR_KEYBOARD_POSITION: + /* TODO Something needs to be done with this. Not sure what */ + break; + case NAVIGATOR_DEVICE_LOCK_STATE: + break; + case NAVIGATOR_WINDOW_COVER: case NAVIGATOR_WINDOW_COVER_ENTER: case NAVIGATOR_WINDOW_COVER_EXIT: + /* BlackBerry specific. Let app status and window status take care of everything */ + break; + case NAVIGATOR_APP_STATE: - //XXX Should probably do something with these + /* Can do the same as NAVIGATOR_WINDOW_ACTIVE/NAVIGATOR_WINDOW_INACTIVE but + seems less likely to work when the app comes to the foreground. Might be a bug */ break; default: @@ -586,8 +615,7 @@ /* deal with work list items */ void fgPlatformInitWork(SFG_Window* window) { - /* notify windowStatus/visibility */ - INVOKE_WCB( *window, WindowStatus, ( GLUT_FULLY_RETAINED ) ); + LOGI("fgPlatformInitWork"); /* Position callback, always at 0,0 */ fghOnPositionNotify(window, 0, 0, GL_TRUE); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |