Browse Source

Proper fix for .cur loading bug

rdb 15 years ago
parent
commit
b4508cbc99
1 changed files with 5 additions and 7 deletions
  1. 5 7
      panda/src/x11display/x11GraphicsWindow.cxx

+ 5 - 7
panda/src/x11display/x11GraphicsWindow.cxx

@@ -2044,14 +2044,12 @@ read_ico(istream &ico) {
   if (infoHeader.compression != 0) goto cleanup;
 
   // Load the color palette, if one exists.
-  colorCount = entries[entry].colorCount == 0 ? 256 : entries[entry].colorCount;
-  // FIXME: this is probably not a proper fix:
-  if (bitsPerPixel == 1) {
-    colorCount = 2;
+  if (bitsPerPixel != 24 && bitsPerPixel != 32) {
+    colorCount = 1 << bitsPerPixel;
+    palette = new IcoColor[colorCount];
+    ico.read(reinterpret_cast<char *>(palette), colorCount * sizeof(IcoColor));
+    if (!ico.good()) goto cleanup;
   }
-  palette = new IcoColor[colorCount];
-  if (bitsPerPixel <= 8) ico.read(reinterpret_cast<char *>(palette), colorCount * sizeof(IcoColor));
-  if (!ico.good()) goto cleanup;
 
   // Read in the pixel data.
   xorBmpSize = (infoHeader.width * (infoHeader.height / 2) * bitsPerPixel) / 8;