[PATCH 4/5] wined3d: Don't update the color table on palette changes.

Stefan Dösinger stefan at codeweavers.com
Mon May 12 08:12:44 CDT 2014


Except for the gdi frontbuffer for now. This will be moved to
the swapchain later.
---
 dlls/ddraw/tests/ddraw1.c |  4 ++--
 dlls/ddraw/tests/ddraw2.c |  4 ++--
 dlls/ddraw/tests/ddraw4.c |  4 ++--
 dlls/ddraw/tests/ddraw7.c |  4 ++--
 dlls/wined3d/surface.c    | 15 +++------------
 5 files changed, 11 insertions(+), 20 deletions(-)

diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index ef07b97..c8f7d65 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -5126,7 +5126,7 @@ static void test_palette_gdi(void)
 
     i = GetDIBColorTable(dc, 4, 1, &rgbquad[4]);
     ok(i == 1, "Expected count 1, got %u.\n", i);
-    todo_wine ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
+    ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
             "Got color table entry %u r=%#x g=%#x b=%#x, expected r=%#x g=%#x b=%#x.\n",
             i, rgbquad[4].rgbRed, rgbquad[4].rgbGreen, rgbquad[4].rgbBlue,
             expected1[4].rgbRed, expected1[4].rgbGreen, expected1[4].rgbBlue);
@@ -5139,7 +5139,7 @@ static void test_palette_gdi(void)
 
     i = GetDIBColorTable(dc, 4, 1, &rgbquad[4]);
     ok(i == 1, "Expected count 1, got %u.\n", i);
-    todo_wine ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
+    ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
             "Got color table entry %u r=%#x g=%#x b=%#x, expected r=%#x g=%#x b=%#x.\n",
             i, rgbquad[4].rgbRed, rgbquad[4].rgbGreen, rgbquad[4].rgbBlue,
             expected1[4].rgbRed, expected1[4].rgbGreen, expected1[4].rgbBlue);
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 64aa519..23795d3 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -6194,7 +6194,7 @@ static void test_palette_gdi(void)
 
     i = GetDIBColorTable(dc, 4, 1, &rgbquad[4]);
     ok(i == 1, "Expected count 1, got %u.\n", i);
-    todo_wine ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
+    ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
             "Got color table entry %u r=%#x g=%#x b=%#x, expected r=%#x g=%#x b=%#x.\n",
             i, rgbquad[4].rgbRed, rgbquad[4].rgbGreen, rgbquad[4].rgbBlue,
             expected1[4].rgbRed, expected1[4].rgbGreen, expected1[4].rgbBlue);
@@ -6207,7 +6207,7 @@ static void test_palette_gdi(void)
 
     i = GetDIBColorTable(dc, 4, 1, &rgbquad[4]);
     ok(i == 1, "Expected count 1, got %u.\n", i);
-    todo_wine ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
+    ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
             "Got color table entry %u r=%#x g=%#x b=%#x, expected r=%#x g=%#x b=%#x.\n",
             i, rgbquad[4].rgbRed, rgbquad[4].rgbGreen, rgbquad[4].rgbBlue,
             expected1[4].rgbRed, expected1[4].rgbGreen, expected1[4].rgbBlue);
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index b760dfb..3d0bfe5 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -7096,7 +7096,7 @@ static void test_palette_gdi(void)
 
     i = GetDIBColorTable(dc, 4, 1, &rgbquad[4]);
     ok(i == 1, "Expected count 1, got %u.\n", i);
-    todo_wine ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
+    ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
             "Got color table entry %u r=%#x g=%#x b=%#x, expected r=%#x g=%#x b=%#x.\n",
             i, rgbquad[4].rgbRed, rgbquad[4].rgbGreen, rgbquad[4].rgbBlue,
             expected1[4].rgbRed, expected1[4].rgbGreen, expected1[4].rgbBlue);
@@ -7109,7 +7109,7 @@ static void test_palette_gdi(void)
 
     i = GetDIBColorTable(dc, 4, 1, &rgbquad[4]);
     ok(i == 1, "Expected count 1, got %u.\n", i);
-    todo_wine ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
+    ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
             "Got color table entry %u r=%#x g=%#x b=%#x, expected r=%#x g=%#x b=%#x.\n",
             i, rgbquad[4].rgbRed, rgbquad[4].rgbGreen, rgbquad[4].rgbBlue,
             expected1[4].rgbRed, expected1[4].rgbGreen, expected1[4].rgbBlue);
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 8c5f6ac..97a6a19 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -6818,7 +6818,7 @@ static void test_palette_gdi(void)
 
     i = GetDIBColorTable(dc, 4, 1, &rgbquad[4]);
     ok(i == 1, "Expected count 1, got %u.\n", i);
-    todo_wine ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
+    ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
             "Got color table entry %u r=%#x g=%#x b=%#x, expected r=%#x g=%#x b=%#x.\n",
             i, rgbquad[4].rgbRed, rgbquad[4].rgbGreen, rgbquad[4].rgbBlue,
             expected1[4].rgbRed, expected1[4].rgbGreen, expected1[4].rgbBlue);
@@ -6831,7 +6831,7 @@ static void test_palette_gdi(void)
 
     i = GetDIBColorTable(dc, 4, 1, &rgbquad[4]);
     ok(i == 1, "Expected count 1, got %u.\n", i);
-    todo_wine ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
+    ok(!memcmp(&rgbquad[4], &expected1[4], sizeof(rgbquad[4])),
             "Got color table entry %u r=%#x g=%#x b=%#x, expected r=%#x g=%#x b=%#x.\n",
             i, rgbquad[4].rgbRed, rgbquad[4].rgbGreen, rgbquad[4].rgbBlue,
             expected1[4].rgbRed, expected1[4].rgbGreen, expected1[4].rgbBlue);
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 1fa0f94..3f28bfd 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -787,12 +787,6 @@ static void surface_realize_palette(struct wined3d_surface *surface)
         }
     }
 
-    if (surface->flags & SFLAG_DIBSECTION)
-    {
-        TRACE("Updating the DC's palette.\n");
-        SetDIBColorTable(surface->hDC, 0, 256, palette->colors);
-    }
-
     /* Propagate the changes to the drawable when we have a palette. */
     if (surface->resource.usage & WINED3DUSAGE_RENDERTARGET)
         surface_load_location(surface, surface->draw_binding);
@@ -1379,17 +1373,14 @@ static void gdi_surface_realize_palette(struct wined3d_surface *surface)
 
     if (!palette) return;
 
-    if (surface->flags & SFLAG_DIBSECTION)
-    {
-        TRACE("Updating the DC's palette.\n");
-        SetDIBColorTable(surface->hDC, 0, 256, palette->colors);
-    }
-
     /* Update the image because of the palette change. Some games like e.g.
      * Red Alert call SetEntries a lot to implement fading. */
     /* Tell the swapchain to update the screen. */
     if (surface->swapchain && surface == surface->swapchain->front_buffer)
+    {
+        SetDIBColorTable(surface->hDC, 0, 256, palette->colors);
         x11_copy_to_screen(surface->swapchain, NULL);
+    }
 }
 
 static void gdi_surface_unmap(struct wined3d_surface *surface)
-- 
1.8.5.5




More information about the wine-patches mailing list