[tbb-commits] [tor-browser/tor-browser-52.5.2esr-7.5-2] Bug 1394654 - Remove OS X opengl workaround from Mozilla bug 603134. r=mstange

gk at torproject.org gk at torproject.org
Mon Dec 18 07:08:29 UTC 2017


commit dca73c105071dc969df0f9d03892c786868d4ee7
Author: Josh Aas <jaas at kflag.net>
Date:   Sat Sep 2 14:24:00 2017 -0400

    Bug 1394654 - Remove OS X opengl workaround from Mozilla bug 603134. r=mstange
    
    This fixes our bug 24566.
---
 widget/cocoa/nsChildView.h  |  1 -
 widget/cocoa/nsChildView.mm | 33 ---------------------------------
 2 files changed, 34 deletions(-)

diff --git a/widget/cocoa/nsChildView.h b/widget/cocoa/nsChildView.h
index 5ef686b29521..f6fb44633c3a 100644
--- a/widget/cocoa/nsChildView.h
+++ b/widget/cocoa/nsChildView.h
@@ -185,7 +185,6 @@ class WidgetRenderingContext;
   float mCumulativeMagnification;
   float mCumulativeRotation;
 
-  BOOL mDidForceRefreshOpenGL;
   BOOL mWaitingForPaint;
 
 #ifdef __LP64__
diff --git a/widget/cocoa/nsChildView.mm b/widget/cocoa/nsChildView.mm
index 91dac240fa66..92ccd8b6c107 100644
--- a/widget/cocoa/nsChildView.mm
+++ b/widget/cocoa/nsChildView.mm
@@ -155,7 +155,6 @@ static uint32_t gNumberOfWidgetsNeedingEventThread = 0;
 
 // sets up our view, attaching it to its owning gecko view
 - (id)initWithFrame:(NSRect)inFrame geckoChild:(nsChildView*)inChild;
-- (void)forceRefreshOpenGL;
 
 // set up a gecko mouse event based on a cocoa mouse event
 - (void) convertCocoaMouseWheelEvent:(NSEvent*)aMouseEvent
@@ -3239,12 +3238,6 @@ NSEvent* gLastDragMouseDownEvent = nil;
     mCumulativeMagnification = 0.0;
     mCumulativeRotation = 0.0;
 
-    // We can't call forceRefreshOpenGL here because, in order to work around
-    // the bug, it seems we need to have a draw already happening. Therefore,
-    // we call it in drawRect:inContext:, when we know that a draw is in
-    // progress.
-    mDidForceRefreshOpenGL = NO;
-
     mNeedsGLUpdate = NO;
 
     [self setFocusRingType:NSFocusRingTypeNone];
@@ -3326,25 +3319,6 @@ NSEvent* gLastDragMouseDownEvent = nil;
   mTextInputHandler = nullptr;
 }
 
-// Work around bug 603134.
-// OS X has a bug that causes new OpenGL windows to only paint once or twice,
-// then stop painting altogether. By clearing the drawable from the GL context,
-// and then resetting the view to ourselves, we convince OS X to start updating
-// again.
-// This can cause a flash in new windows - bug 631339 - but it's very hard to
-// fix that while maintaining this workaround.
-- (void)forceRefreshOpenGL
-{
-  NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
-
-  [mGLContext clearDrawable];
-  CGLLockContext((CGLContextObj)[mGLContext CGLContextObj]);
-  [self updateGLContext];
-  CGLUnlockContext((CGLContextObj)[mGLContext CGLContextObj]);
-
-  NS_OBJC_END_TRY_ABORT_BLOCK;
-}
-
 - (bool)preRender:(NSOpenGLContext *)aGLContext
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN;
@@ -3828,13 +3802,6 @@ NSEvent* gLastDragMouseDownEvent = nil;
   LayoutDeviceIntRegion region(geckoBounds);
 
   mGeckoChild->PaintWindow(region);
-
-  // Force OpenGL to refresh the very first time we draw. This works around a
-  // Mac OS X bug that stops windows updating on OS X when we use OpenGL.
-  if (!mDidForceRefreshOpenGL) {
-    [self performSelector:@selector(forceRefreshOpenGL) withObject:nil afterDelay:0];
-    mDidForceRefreshOpenGL = YES;
-  }
 }
 
 // Called asynchronously after setNeedsDisplay in order to avoid entering the



More information about the tbb-commits mailing list