• Sam Lantinga's avatar
    Fixed bug #526 · 9b8a9304
    Sam Lantinga authored
    Comment #1 From  Simon Howard   2009-03-20 16:50:56
    
    Hi,
    
    I'm the author of Chocolate Doom, one of the other source ports that James
    mentioned.  This is a patch against the current SVN version of SDL 1.2 that
    fixes the bug.  It has been tested and hopefully should be obviously correct
    from examining the changes. I'll give a brief explanation.
    
    When the palette is set with SDL_SetPalette, the IDirectDrawPalette_SetEntries
    DirectX function is invoked. However, when this happens, a WM_PALETTECHANGED
    message is sent to the window.
    
    A WM_PALETTECHANGED message can also be received if the palette is changed for
    some other reason, like if the system palette is changed.  Therefore, the
    palette change handler (DX5_PaletteChanged) has code to deal with this case.
    It distinguishes "expected" palette changes (set with SDL_SetPalette) from
    "unexpected" palette changes using the colorchange_expected variable, which is
    set before calling IDirectDrawPalette_SetEntries.  However, the code to set
    this variable is missing in the fullscreen code path.  By setting this
    variable, the palette change is handled properly and the freezes go away.
    
    --HG--
    branch : SDL-1.2
    extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%403576
    9b8a9304
SDL_dx5video.c 75.7 KB