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