Bug 1250710 - Update usages of ScopedPackAlignment. - r=jrmuizel draft
authorJeff Gilbert <jgilbert@mozilla.com>
Tue, 14 Jun 2016 10:09:25 -0700
changeset 383812 d0dac84f683f895eabc870cca2f07562ac2b5463
parent 383811 82cd7adbb8062bcb863fb665b18b280ea7cb565e
child 383813 976d7f1ccdbbc19d36f5cb06d50614ec8c64891b
push id22101
push userbmo:jgilbert@mozilla.com
push dateTue, 05 Jul 2016 04:23:13 +0000
reviewersjrmuizel
bugs1250710
milestone50.0a1
Bug 1250710 - Update usages of ScopedPackAlignment. - r=jrmuizel MozReview-Commit-ID: DgngFxBu8kn
gfx/gl/SharedSurface.cpp
gfx/layers/client/CanvasClient.cpp
--- a/gfx/gl/SharedSurface.cpp
+++ b/gfx/gl/SharedSurface.cpp
@@ -564,17 +564,21 @@ ReadbackSharedSurface(SharedSurface* src
                    readGLFormat == LOCAL_GL_BGRA);
         MOZ_ASSERT(readType == LOCAL_GL_UNSIGNED_BYTE);
 
         // ReadPixels from the current FB into lockedBits.
         {
             size_t alignment = 8;
             if (dstStride % 4 == 0)
                 alignment = 4;
-            ScopedPackAlignment autoAlign(gl, alignment);
+
+            ScopedPackState scopedPackState(gl);
+            if (alignment != 4) {
+                gl->fPixelStorei(LOCAL_GL_PACK_ALIGNMENT, alignment);
+            }
 
             gl->raw_fReadPixels(0, 0, width, height, readGLFormat, readType,
                                 dstBytes);
         }
     }
 
     const bool isReadRGBA = readGLFormat == LOCAL_GL_RGBA;
 
@@ -596,17 +600,17 @@ uint32_t
 ReadPixel(SharedSurface* src)
 {
     GLContext* gl = src->mGL;
 
     uint32_t pixel;
 
     ScopedReadbackFB a(src);
     {
-        ScopedPackAlignment autoAlign(gl, 4);
+        ScopedPackState scopedPackState(gl);
 
         UniquePtr<uint8_t[]> bytes(new uint8_t[4]);
         gl->raw_fReadPixels(0, 0, 1, 1, LOCAL_GL_RGBA, LOCAL_GL_UNSIGNED_BYTE,
                             bytes.get());
         memcpy(&pixel, bytes.get(), 4);
     }
 
     return pixel;
--- a/gfx/layers/client/CanvasClient.cpp
+++ b/gfx/layers/client/CanvasClient.cpp
@@ -304,32 +304,32 @@ TexClientFromReadback(SharedSurface* src
       // [RR, GG, BB, AA]
       texClient = factory.CreateR8G8B8AX8();
     } else {
       MOZ_CRASH("GFX: Bad `read{Format,Type}`.");
     }
 
     MOZ_ASSERT(texClient);
     if (!texClient)
-        return nullptr;
+      return nullptr;
 
     // With a texClient, we can lock for writing.
     TextureClientAutoLock autoLock(texClient, OpenMode::OPEN_WRITE);
     DebugOnly<bool> succeeded = autoLock.Succeeded();
     MOZ_ASSERT(succeeded, "texture should have locked");
 
     MappedTextureData mapped;
     texClient->BorrowMappedData(mapped);
 
     // ReadPixels from the current FB into mapped.data.
     auto width = src->mSize.width;
     auto height = src->mSize.height;
 
     {
-      ScopedPackAlignment autoAlign(gl, 4);
+      ScopedPackState scopedPackState(gl);
 
       MOZ_ASSERT(mapped.stride/4 == mapped.size.width);
       gl->raw_fReadPixels(0, 0, width, height, readFormat, readType, mapped.data);
     }
 
     // RB_SWAPPED doesn't work with D3D11. (bug 1051010)
     // RB_SWAPPED doesn't work with Basic. (bug ???????)
     // RB_SWAPPED doesn't work with D3D9. (bug ???????)