From fbfabb5060d908b9324c618a3014d360dc455d5d Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 9 Mar 2014 18:12:01 +0000 Subject: [PATCH] Move the pugl osx idle hack into our extended file --- dgl/src/pugl/pugl_osx.m | 48 ++------------------------------ dgl/src/pugl/pugl_osx_extended.h | 1 + dgl/src/pugl/pugl_osx_extended.m | 30 ++++++++++++++++++++ 3 files changed, 34 insertions(+), 45 deletions(-) diff --git a/dgl/src/pugl/pugl_osx.m b/dgl/src/pugl/pugl_osx.m index 2699bbb7..706e8bde 100644 --- a/dgl/src/pugl/pugl_osx.m +++ b/dgl/src/pugl/pugl_osx.m @@ -36,7 +36,6 @@ defer:(BOOL)flag; - (void) setPuglview:(PuglView*)view; - (BOOL) windowShouldClose:(id)sender; -- (BOOL) canBecomeKeyWindow:(id)sender; @end @implementation PuglWindow @@ -71,14 +70,9 @@ return YES; } -- (BOOL) canBecomeKeyWindow:(id)sender -{ - return NO; -} - @end -void +static void puglDisplay(PuglView* view) { if (view->displayFunc) { @@ -191,10 +185,6 @@ getModifiers(PuglView* view, NSEvent* ev) view->event_timestamp_ms = fmod([ev timestamp] * 1000.0, UINT32_MAX); - double ts = [ev timestamp] * 1000.0; - ts = (uint32)ts % 500000; //ridiculously large vals won't fit - view->event_timestamp_ms = ts; - unsigned mods = 0; mods |= (modifierFlags & NSShiftKeyMask) ? PUGL_MOD_SHIFT : 0; mods |= (modifierFlags & NSControlKeyMask) ? PUGL_MOD_CTRL : 0; @@ -345,7 +335,6 @@ getModifiers(PuglView* view, NSEvent* ev) struct PuglInternalsImpl { PuglOpenGLView* glview; id window; - bool isEmbed; }; PuglView* @@ -379,9 +368,8 @@ puglCreate(PuglNativeWindow parent, [window setPuglview:view]; [window setTitle:titleString]; - impl->glview = [PuglOpenGLView new]; - impl->window = window; - impl->isEmbed = (parent != 0); + impl->glview = [PuglOpenGLView new]; + impl->window = window; impl->glview->puglview = view; [window setContentView:impl->glview]; @@ -411,36 +399,6 @@ puglDestroy(PuglView* view) PuglStatus puglProcessEvents(PuglView* view) { - if (! view->impl->isEmbed) - { - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - NSEvent* event; - - static const NSUInteger eventMask = (NSLeftMouseDownMask | NSLeftMouseUpMask | - NSRightMouseDownMask | NSRightMouseUpMask | - NSMouseMovedMask | - NSLeftMouseDraggedMask | NSRightMouseDraggedMask | - NSMouseEnteredMask | NSMouseExitedMask | - NSKeyDownMask | NSKeyUpMask | - NSFlagsChangedMask | - NSCursorUpdateMask | NSScrollWheelMask); - - for (;;) { - event = [view->impl->window - nextEventMatchingMask:eventMask - untilDate:[NSDate distantPast] - inMode:NSEventTrackingRunLoopMode - dequeue:YES]; - - if (event == nil) - break; - - [view->impl->window sendEvent: event]; - } - - [pool release]; - } - [view->impl->glview setNeedsDisplay: YES]; return PUGL_SUCCESS; diff --git a/dgl/src/pugl/pugl_osx_extended.h b/dgl/src/pugl/pugl_osx_extended.h index 10f944ed..d718eb58 100644 --- a/dgl/src/pugl/pugl_osx_extended.h +++ b/dgl/src/pugl/pugl_osx_extended.h @@ -27,6 +27,7 @@ extern "C" { #endif +void puglImplIdle(PuglView* view); void puglImplFocus(PuglView* view); void puglImplSetSize(PuglView* view, unsigned int width, unsigned int height, bool forced); void puglImplSetTitle(PuglView* view, const char* title); diff --git a/dgl/src/pugl/pugl_osx_extended.m b/dgl/src/pugl/pugl_osx_extended.m index 1110a89f..c2350a4f 100644 --- a/dgl/src/pugl/pugl_osx_extended.m +++ b/dgl/src/pugl/pugl_osx_extended.m @@ -23,6 +23,36 @@ #include "pugl_osx_extended.h" +void puglImplIdle(PuglView* view) +{ + NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; + NSEvent* event; + + static const NSUInteger eventMask = (NSLeftMouseDownMask | NSLeftMouseUpMask | + NSRightMouseDownMask | NSRightMouseUpMask | + NSMouseMovedMask | + NSLeftMouseDraggedMask | NSRightMouseDraggedMask | + NSMouseEnteredMask | NSMouseExitedMask | + NSKeyDownMask | NSKeyUpMask | + NSFlagsChangedMask | + NSCursorUpdateMask | NSScrollWheelMask); + + for (;;) { + event = [view->impl->window + nextEventMatchingMask:eventMask + untilDate:[NSDate distantPast] + inMode:NSEventTrackingRunLoopMode + dequeue:YES]; + + if (event == nil) + break; + + [view->impl->window sendEvent: event]; + } + + [pool release]; +} + void puglImplFocus(PuglView* view) { id window = view->impl->window;