google issue 42 - palette corruption

This commit is contained in:
zeromus 2008-05-07 22:33:53 +00:00
parent 914dac6540
commit 7f7b80b8a8
1 changed files with 18 additions and 13 deletions

View File

@ -97,19 +97,24 @@ void FCEUD_GetPalette(unsigned char i, unsigned char *r, unsigned char *g, unsig
*b=color_palette[i].peBlue;
}
static bool firstInitialize = true;
static int InitializeDDraw(int fs)
{
#ifdef _USE_SHARED_MEMORY_
mapColorPalette = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE, 0, 256 * sizeof(PALETTEENTRY),"fceu.ColorPalette");
if(mapColorPalette == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(mapColorPalette);
mapColorPalette = NULL;
color_palette = (PALETTEENTRY*)malloc(256 * sizeof(PALETTEENTRY)); //mbg merge 7/18/06 added cast
//only init the palette the first time through
if(firstInitialize) {
firstInitialize = false;
#ifdef _USE_SHARED_MEMORY_
mapColorPalette = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE, 0, 256 * sizeof(PALETTEENTRY),"fceu.ColorPalette");
if(mapColorPalette == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(mapColorPalette);
mapColorPalette = NULL;
color_palette = (PALETTEENTRY*)malloc(256 * sizeof(PALETTEENTRY)); //mbg merge 7/18/06 added cast
}
else
color_palette = (PALETTEENTRY *)MapViewOfFile(mapColorPalette, FILE_MAP_WRITE, 0, 0, 0);
#endif
}
else
color_palette = (PALETTEENTRY *)MapViewOfFile(mapColorPalette, FILE_MAP_WRITE, 0, 0, 0);
#endif
//(disvaccel&(1<<(fs?1:0)))?(GUID FAR *)DDCREATE_EMULATIONONLY:
ddrval = DirectDrawCreate((disvaccel&(1<<(fs?1:0)))?(GUID FAR *)DDCREATE_EMULATIONONLY:NULL, &lpDD, NULL);
@ -1081,8 +1086,8 @@ void SetFSVideoMode()
void DoVideoConfigFix(void)
{
FCEUI_DisableSpriteLimitation(eoptions&EO_NOSPRLIM);
UpdateRendBounds();
FCEUI_DisableSpriteLimitation(eoptions&EO_NOSPRLIM);
UpdateRendBounds();
}
/**
@ -1103,6 +1108,6 @@ void ConfigVideo(void)
SetVideoMode(0);
changerecursive = 0;
}
//SetMainWindowStuff();
SetMainWindowStuff();
}