Bug 559660. Mark Windows surfaces dirty when we muck with underlying bits. r=joe
authorJeff Muizelaar <jmuizelaar@mozilla.com>
Mon, 26 Apr 2010 10:29:59 -0400
changeset 41339 e3e80935c165aa6a68516331ac39fdaf89a8ddb7
parent 41338 2968d19b01651b1f0064f8c5b3df441f2ca7215a
child 41340 f236632a9747316babf5b4b47b79a03b504cad0f
push id12974
push userjmuizelaar@mozilla.com
push dateMon, 26 Apr 2010 14:41:22 +0000
treeherdermozilla-central@f236632a9747 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjoe
bugs559660
milestone1.9.3a5pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
Bug 559660. Mark Windows surfaces dirty when we muck with underlying bits. r=joe If we don't do this some animated gifs break with the cairo update.
modules/libpr0n/src/imgFrame.cpp
--- a/modules/libpr0n/src/imgFrame.cpp
+++ b/modules/libpr0n/src/imgFrame.cpp
@@ -848,16 +848,21 @@ nsresult imgFrame::LockImageData()
 #endif
   }
 
   // We might write to the bits in this image surface, so we need to make the
   // surface ready for that.
   if (mImageSurface)
     mImageSurface->Flush();
 
+#ifdef USE_WIN_SURFACE
+  if (mWinSurface)
+    mWinSurface->Flush();
+#endif
+
   return NS_OK;
 }
 
 nsresult imgFrame::UnlockImageData()
 {
   if (mPalettedImageData)
     return NS_ERROR_NOT_AVAILABLE;
 
@@ -867,16 +872,21 @@ nsresult imgFrame::UnlockImageData()
   }
 
   mLocked = PR_FALSE;
 
   // Assume we've been written to.
   if (mImageSurface)
     mImageSurface->MarkDirty();
 
+#ifdef USE_WIN_SURFACE
+  if (mWinSurface)
+    mWinSurface->MarkDirty();
+#endif
+
 #ifdef XP_MACOSX
   // The quartz image surface (ab)uses the flush method to get the
   // cairo_image_surface data into a CGImage, so we have to call Flush() here.
   if (mQuartzSurface)
     mQuartzSurface->Flush();
 #endif
   return NS_OK;
 }