--- a/src/drivers/video_gtk.c Tue Feb 12 08:56:34 2008 +0000 +++ b/src/drivers/video_gtk.c Wed Apr 16 10:12:12 2008 +0000 @@ -24,11 +24,11 @@ #include "display.h" #include "dckeysyms.h" #include "drivers/video_glx.h" -#include "drivers/gl_common.h" +#include "drivers/video_gl.h" #include "pvr2/pvr2.h" #include "gtkui/gtkui.h" -static GtkWidget *video_win = NULL; +GtkWidget *gtk_video_win = NULL; int video_width = 640; int video_height = 480; @@ -154,23 +154,28 @@ gboolean video_gtk_init() { - video_win = gtk_gui_get_renderarea(); - if( video_win == NULL ) { + gtk_video_win = gtk_gui_get_renderarea(); + if( gtk_video_win == NULL ) { return FALSE; } - g_signal_connect( video_win, "expose_event", + g_signal_connect( gtk_video_win, "expose_event", G_CALLBACK(video_gtk_expose_callback), NULL ); - g_signal_connect( video_win, "configure_event", + g_signal_connect( gtk_video_win, "configure_event", G_CALLBACK(video_gtk_resize_callback), NULL ); - video_width = video_win->allocation.width; - video_height = video_win->allocation.height; - Display *display = gdk_x11_display_get_xdisplay( gtk_widget_get_display(GTK_WIDGET(video_win))); - Window window = GDK_WINDOW_XWINDOW( GTK_WIDGET(video_win)->window ); + video_width = gtk_video_win->allocation.width; + video_height = gtk_video_win->allocation.height; + Display *display = gdk_x11_display_get_xdisplay( gtk_widget_get_display(GTK_WIDGET(gtk_video_win))); + Window window = GDK_WINDOW_XWINDOW( GTK_WIDGET(gtk_video_win)->window ); +#ifdef HAVE_LIBOSMESA + video_gdk_init_driver( &display_gtk_driver ); +#else if( ! video_glx_init_context( display, window ) || ! video_glx_init_driver( &display_gtk_driver ) ) { return FALSE; } +#endif + #ifdef HAVE_LINUX_JOYSTICK linux_joystick_init(); #endif @@ -179,21 +184,34 @@ gboolean video_gtk_display_blank( uint32_t colour ) { - GdkGC *gc = gdk_gc_new(video_win->window); + GdkGC *gc = gdk_gc_new(gtk_video_win->window); GdkColor color = {0, ((colour>>16)&0xFF)*257, ((colour>>8)&0xFF)*257, ((colour)&0xFF)*257 }; GdkColormap *cmap = gdk_colormap_get_system(); gdk_colormap_alloc_color( cmap, &color, TRUE, TRUE ); gdk_gc_set_foreground( gc, &color ); gdk_gc_set_background( gc, &color ); - gdk_draw_rectangle( video_win->window, gc, TRUE, 0, 0, video_width, video_height ); + gdk_draw_rectangle( gtk_video_win->window, gc, TRUE, 0, 0, video_width, video_height ); gdk_gc_destroy(gc); gdk_colormap_free_colors( cmap, &color, 1 ); } +XVisualInfo *video_gtk_get_visual() +{ +#ifdef HAVE_LIBOSMESA + return NULL; +#else + return video_glx_get_visual(); +#endif +} + void video_gtk_shutdown() { - if( video_win != NULL ) { + if( gtk_video_win != NULL ) { +#ifdef HAVE_LIBOSMESA + video_gdk_shutdown(); +#else video_glx_shutdown(); +#endif } #ifdef HAVE_LINUX_JOYSTICK linux_joystick_shutdown();