p_vout->p_sys_destroy = vout_SDLDestroy;
p_vout->p_sys_manage = vout_SDLManage;
p_vout->p_sys_display = vout_SDLDisplay;
+ p_vout->p_set_palette = vout_SDLSetPalette;
+
}
static void intf_GetPlugin( p_intf_thread_t p_intf )
return( 0 );
}
+/*****************************************************************************
+ * vout_SDLSetPalette: sets an 8 bpp palette
+ *****************************************************************************
+ * This function sets the palette given as an argument. It does not return
+ * anything, but could later send information on which colors it was unable
+ * to set.
+ *****************************************************************************/
+void vout_SDLSetPalette( p_vout_thread_t p_vout, u16 *red, u16 *green, u16 *blue, u16 *transp)
+{
+ /* Create a display surface with a grayscale palette */
+ SDL_Color colors[256];
+ int i;
+ intf_ErrMsgImm( "palettin'\n");
+
+ /* Fill colors with color information */
+ for(i=0;i<256;i++){
+ colors[i].r=red[i]>>8;
+ colors[i].g=green[i]>>8;
+ colors[i].b=blue[i]>>8;
+ }
+
+ /* Set palette */
+ if(SDL_SetColors(p_vout->p_sys->p_display, colors, 0, 256) == 0)
+ intf_ErrMsgImm( "error\n");
+
+}
+
+
+
+
/*****************************************************************************
* vout_SDLDisplay: displays previously rendered output
*/
/* init flags and cursor */
- flags = SDL_ANYFORMAT;
+ flags = SDL_ANYFORMAT | SDL_HWPALETTE;
if( p_vout->p_sys->b_fullscreen )
flags |= SDL_FULLSCREEN;