diff --git a/Source/palette.cpp b/Source/palette.cpp index 84df3e9c3..6a2caa467 100644 --- a/Source/palette.cpp +++ b/Source/palette.cpp @@ -5,7 +5,7 @@ PALETTEENTRY logical_palette[256]; PALETTEENTRY system_palette[256]; PALETTEENTRY orig_palette[256]; -UINT gdwPalEntries; +int gdwPalEntries; /* data */ @@ -67,25 +67,27 @@ void LoadGamma() void LoadSysPal() { - HDC hDC; // ebx - int i; // ecx - int iStartIndex; // edi + HDC hDC; + int i, iStartIndex; for (i = 0; i < 256; i++) system_palette[i].peFlags = PC_NOCOLLAPSE | PC_RESERVED; if (!fullscreen) { hDC = GetDC(NULL); + gdwPalEntries = GetDeviceCaps(hDC, NUMRESERVED) / 2; GetSystemPaletteEntries(hDC, 0, gdwPalEntries, system_palette); for (i = 0; i < gdwPalEntries; i++) system_palette[i].peFlags = 0; + iStartIndex = 256 - gdwPalEntries; GetSystemPaletteEntries(hDC, iStartIndex, gdwPalEntries, &system_palette[iStartIndex]); if (iStartIndex < 256) { for (i = iStartIndex; i < 256; i++) system_palette[i].peFlags = 0; } + ReleaseDC(NULL, hDC); } } diff --git a/Source/palette.h b/Source/palette.h index 2a0c6dd9a..5bee6a535 100644 --- a/Source/palette.h +++ b/Source/palette.h @@ -5,7 +5,7 @@ extern PALETTEENTRY logical_palette[256]; extern PALETTEENTRY system_palette[256]; extern PALETTEENTRY orig_palette[256]; -extern UINT gdwPalEntries; +extern int gdwPalEntries; void SaveGamma(); void palette_init();