From: <ric...@us...> - 2009-01-04 23:22:41
|
Revision: 1385 http://desmume.svn.sourceforge.net/desmume/?rev=1385&view=rev Author: riccardom Date: 2009-01-04 23:22:36 +0000 (Sun, 04 Jan 2009) Log Message: ----------- Move GPU_screen to rgb loop in a helper function since it is repeated three times. Modified Paths: -------------- trunk/desmume/src/gtk/main.cpp Modified: trunk/desmume/src/gtk/main.cpp =================================================================== --- trunk/desmume/src/gtk/main.cpp 2009-01-04 16:05:14 UTC (rev 1384) +++ trunk/desmume/src/gtk/main.cpp 2009-01-04 23:22:36 UTC (rev 1385) @@ -575,6 +575,15 @@ /////////////////////////////// DRAWING SCREEN ////////////////////////////////// +static inline void gpu_screen_to_rgb(u8 *rgb, int size) +{ + for (int i = 0; i < size; i++) { + rgb[(i * 3) + 0] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 0) & 0x1f) << 3; + rgb[(i * 3) + 1] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 5) & 0x1f) << 3; + rgb[(i * 3) + 2] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 10) & 0x1f) << 3; + } +} + #ifdef GTKGLEXT_AVAILABLE static int top_screen_expose_fn( GtkWidget *widget, GdkEventExpose *event, gpointer data) @@ -599,15 +608,9 @@ glBindTexture( GL_TEXTURE_2D, screen_texture[0]); if ( software_convert) { - int i; u8 converted[256 * 384 * 3]; - for ( i = 0; i < (256 * 384); i++) { - converted[(i * 3) + 0] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 0) & 0x1f) << 3; - converted[(i * 3) + 1] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 5) & 0x1f) << 3; - converted[(i * 3) + 2] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 10) & 0x1f) << 3; - } - + gpu_screen_to_rgb(converted, 256 * 384); glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 256, 384, GL_RGB, GL_UNSIGNED_BYTE, @@ -821,12 +824,8 @@ rgb = (guchar *) malloc(SCREENS_PIXEL_SIZE*3); if (!rgb) return 0; - for (int i = 0; i < SCREENS_PIXEL_SIZE; i++) { - rgb[(i * 3) + 0] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 0) & 0x1f) << 3; - rgb[(i * 3) + 1] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 5) & 0x1f) << 3; - rgb[(i * 3) + 2] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 10) & 0x1f) << 3; - } + gpu_screen_to_rgb(rgb, SCREENS_PIXEL_SIZE); gdk_draw_rgb_image (widget->window, widget->style->fg_gc[widget->state], 0, 0, 256, 192*2, @@ -1107,12 +1106,8 @@ rgb = (u8 *) malloc(SCREENS_PIXEL_SIZE*3); if (!rgb) return; - for (int i = 0; i < SCREENS_PIXEL_SIZE; i++) { - rgb[(i * 3) + 0] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 0) & 0x1f) << 3; - rgb[(i * 3) + 1] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 5) & 0x1f) << 3; - rgb[(i * 3) + 2] = ((*((u16 *)&GPU_screen[(i<<1)]) >> 10) & 0x1f) << 3; - } + gpu_screen_to_rgb(rgb, SCREENS_PIXEL_SIZE); screenshot = gdk_pixbuf_new_from_data(rgb, GDK_COLORSPACE_RGB, FALSE, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |