From 5f5513a01e2a458a972852e401ebe1ce06d35784 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Fri, 24 Jan 2014 10:26:37 +0000 Subject: [PATCH] Made sure that windows created on BlackBerry are registered as fullscreen, for now. Added more logging in fgPlatformProcessSingleEvent on BlackBerry. Better handling of key repeats on BlackBerry by taking into account global and window settings. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1651 7f0cb862-5218-0410-a997-914c9d46530a --- .../src/blackberry/fg_main_blackberry.c | 21 ++++++++++++++++--- .../src/blackberry/fg_window_blackberry.c | 3 ++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/freeglut/freeglut/src/blackberry/fg_main_blackberry.c b/freeglut/freeglut/src/blackberry/fg_main_blackberry.c index 52b36f8..4c666f1 100644 --- a/freeglut/freeglut/src/blackberry/fg_main_blackberry.c +++ b/freeglut/freeglut/src/blackberry/fg_main_blackberry.c @@ -283,6 +283,7 @@ void fgPlatformProcessSingleEvent ( void ) { 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); if(touchEvent.contact_id == 0) { int size[2]; screen_get_window_property_iv(window->Window.Handle, SCREEN_PROPERTY_BUFFER_SIZE, size); @@ -320,6 +321,8 @@ void fgPlatformProcessSingleEvent ( void ) 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); + //XXX Should multitouch be handled? // Handle left mouse. Interpret as touch if the left mouse event is not consumed. @@ -384,7 +387,7 @@ void fgPlatformProcessSingleEvent ( void ) 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); // Suppress key repeats if desired - if (!fgStructure.CurrentWindow->State.IgnoreKeyRepeat && (flags & KEY_REPEAT) == 0) { + if ((flags & KEY_REPEAT) == 0 || (fgState.KeyRepeat == GLUT_KEY_REPEAT_ON && !fgStructure.CurrentWindow->State.IgnoreKeyRepeat)) { unsigned int keypress = 0; unsigned char ascii = 0; if ((keypress = key_special(value))) { @@ -403,9 +406,14 @@ void fgPlatformProcessSingleEvent ( void ) } break; } + + default: + LOGW("fgPlatformProcessSingleEvent: unknown screen event: 0x%X", SLOG2_FA_SIGNED(eventType), SLOG2_FA_END); + break; } } else if (domain == navigator_get_domain()) { - switch (bps_event_get_code(event)) { + int eventType = bps_event_get_code(event); + switch (eventType) { case NAVIGATOR_WINDOW_STATE: { @@ -422,6 +430,9 @@ void fgPlatformProcessSingleEvent ( void ) LOGI("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE-NAVIGATOR_WINDOW_THUMBNAIL/NAVIGATOR_WINDOW_INVISIBLE", SLOG2_FA_END); INVOKE_WCB(*window, AppStatus, (GLUT_APPSTATUS_PAUSE)); break; + default: + LOGW("fgPlatformProcessSingleEvent: NAVIGATOR_WINDOW_STATE unknown: 0x%X", SLOG2_FA_SIGNED(state), SLOG2_FA_END); + break; } break; } @@ -434,10 +445,14 @@ void fgPlatformProcessSingleEvent ( void ) if (window != NULL) { fgDestroyWindow(window); } else { - LOGI("NAVIGATOR_EXIT: No current window", SLOG2_FA_END); + LOGW("NAVIGATOR_EXIT: No current window", SLOG2_FA_END); } } break; + + default: + LOGW("fgPlatformProcessSingleEvent: unknown navigator event: 0x%X", SLOG2_FA_SIGNED(eventType), SLOG2_FA_END); + break; } } } diff --git a/freeglut/freeglut/src/blackberry/fg_window_blackberry.c b/freeglut/freeglut/src/blackberry/fg_window_blackberry.c index 7d2eb49..ff0c08f 100644 --- a/freeglut/freeglut/src/blackberry/fg_window_blackberry.c +++ b/freeglut/freeglut/src/blackberry/fg_window_blackberry.c @@ -108,9 +108,10 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title, /* Request window events */ screen_request_events(window->Window.pContext.screenContext); - /* Save window */ + /* Save window and set state */ window->Window.Handle = fgDisplay.pDisplay.single_native_window; window->State.WorkMask |= GLUT_INIT_WORK; + window->State.IsFullscreen = GL_TRUE; //XXX Always fullscreen for now /* Create context */ fghChooseConfig(&window->Window.pContext.egl.Config);