diff options
author | Lyubomir Marinov <lyubomir.marinov@jitsi.org> | 2010-05-10 17:37:26 +0000 |
---|---|---|
committer | Lyubomir Marinov <lyubomir.marinov@jitsi.org> | 2010-05-10 17:37:26 +0000 |
commit | 8bd683d875d4ff2d66604382140900739d1d4614 (patch) | |
tree | e162794983acb965c7e3939bd4ed0db9e1cef70e /src | |
parent | 8389d8e931594398b55c91798e5eb45dfad5a82b (diff) | |
download | jitsi-8bd683d875d4ff2d66604382140900739d1d4614.zip jitsi-8bd683d875d4ff2d66604382140900739d1d4614.tar.gz jitsi-8bd683d875d4ff2d66604382140900739d1d4614.tar.bz2 |
Fixes the locking of the UI upon resizing with the native VideoRenderer on Mac OS X.
Diffstat (limited to 'src')
-rw-r--r-- | src/native/jawtrenderer/JAWTRenderer_MacOSX.m | 65 | ||||
-rw-r--r-- | src/net/java/sip/communicator/impl/neomedia/device/VideoMediaDeviceSession.java | 2 |
2 files changed, 24 insertions, 43 deletions
diff --git a/src/native/jawtrenderer/JAWTRenderer_MacOSX.m b/src/native/jawtrenderer/JAWTRenderer_MacOSX.m index bc16820..153f87a 100644 --- a/src/native/jawtrenderer/JAWTRenderer_MacOSX.m +++ b/src/native/jawtrenderer/JAWTRenderer_MacOSX.m @@ -133,7 +133,6 @@ JAWTRenderer_process { JAWTRenderer *renderer; NSAutoreleasePool *autoreleasePool; - jboolean repaint; renderer = (JAWTRenderer *) handle; autoreleasePool = [[NSAutoreleasePool alloc] init]; @@ -200,27 +199,10 @@ JAWTRenderer_process } renderer->width = width; renderer->height = height; - - /* - * The component needs repainting now. Upon return, a paint of the - * component will be scheduled. But #paint and #process both want the - * lock on the renderer and it may turn out that #process will manage to - * execute once again without #paint being able to depict the current - * frame. So try to paint now and don't schedule a paint for later. - */ - if (renderer->view) - { - [renderer paint]; - repaint = JNI_FALSE; - } - else - repaint = JNI_TRUE; } - else - repaint = JNI_TRUE; [autoreleasePool release]; - return repaint; + return JNI_TRUE; } @implementation JAWTRenderer @@ -314,31 +296,26 @@ JAWTRenderer_process - (void)paint { - if ([view lockFocusIfCanDraw]) - { - [glContext makeCurrentContext]; + [glContext makeCurrentContext]; - // drawRect: - glClear(GL_COLOR_BUFFER_BIT); - if (texture) - { - glEnable(JAWT_RENDERER_TEXTURE); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); - glVertex2f(-1.0, 1.0); - glTexCoord2f(width, 0); - glVertex2f(1.0, 1.0); - glTexCoord2f(width, height); - glVertex2f(1.0, -1.0); - glTexCoord2f(0, height); - glVertex2f(-1.0, -1.0); - glEnd(); - glDisable(JAWT_RENDERER_TEXTURE); - } - glFlush(); - - [view unlockFocus]; + // drawRect: + glClear(GL_COLOR_BUFFER_BIT); + if (texture) + { + glEnable(JAWT_RENDERER_TEXTURE); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); + glVertex2f(-1.0, 1.0); + glTexCoord2f(width, 0); + glVertex2f(1.0, 1.0); + glTexCoord2f(width, height); + glVertex2f(1.0, -1.0); + glTexCoord2f(0, height); + glVertex2f(-1.0, -1.0); + glEnd(); + glDisable(JAWT_RENDERER_TEXTURE); } + glFlush(); } - (void)reshape @@ -366,6 +343,7 @@ JAWTRenderer_process { if (view) { +#ifdef JAWT_RENDERER_USE_NSNOTIFICATIONCENTER NSNotificationCenter *notificationCenter; notificationCenter = [NSNotificationCenter defaultCenter]; @@ -380,6 +358,7 @@ JAWTRenderer_process name:NSViewFrameDidChangeNotification object:view]; } +#endif /* JAWT_RENDERER_USE_NSNOTIFICATIONCENTER */ [view release]; } @@ -395,6 +374,7 @@ JAWTRenderer_process if ([glContext view] != view) [glContext setView:view]; +#ifdef JAWT_RENDERER_USE_NSNOTIFICATIONCENTER notificationCenter = [NSNotificationCenter defaultCenter]; if (notificationCenter) { @@ -411,6 +391,7 @@ JAWTRenderer_process name:NSViewFrameDidChangeNotification object:view]; } +#endif /* JAWT_RENDERER_USE_NSNOTIFICATIONCENTER */ [self update]; } diff --git a/src/net/java/sip/communicator/impl/neomedia/device/VideoMediaDeviceSession.java b/src/net/java/sip/communicator/impl/neomedia/device/VideoMediaDeviceSession.java index b0d8d6c..5b0e779 100644 --- a/src/net/java/sip/communicator/impl/neomedia/device/VideoMediaDeviceSession.java +++ b/src/net/java/sip/communicator/impl/neomedia/device/VideoMediaDeviceSession.java @@ -16,10 +16,10 @@ import javax.media.protocol.*; import javax.swing.*; import net.java.sip.communicator.impl.neomedia.*; -import net.java.sip.communicator.impl.neomedia.transform.*; import net.java.sip.communicator.impl.neomedia.codec.video.*; import net.java.sip.communicator.impl.neomedia.codec.video.h264.*; import net.java.sip.communicator.impl.neomedia.imgstreaming.*; +import net.java.sip.communicator.impl.neomedia.transform.*; import net.java.sip.communicator.service.neomedia.*; import net.java.sip.communicator.service.neomedia.format.*; import net.java.sip.communicator.service.neomedia.event.*; |