revision 659:6b1dff1575b3
summary |
tree |
shortlog |
changelog |
graph |
changeset |
raw | bz2 | zip | gz changeset | 659:6b1dff1575b3 |
parent | 658:f5926310bfbe |
child | 660:d1b2695347c6 |
author | nkeynes |
date | Wed Apr 16 22:54:40 2008 +0000 (16 years ago) |
Move drawable creation to video_gtk.c - removes the last platform dependency from gtkui
1.1 --- a/src/drivers/video_gtk.c Wed Apr 16 12:43:52 2008 +00001.2 +++ b/src/drivers/video_gtk.c Wed Apr 16 22:54:40 2008 +00001.3 @@ -98,7 +98,8 @@1.4 #endif1.6 #endif1.7 -GtkWidget *gtk_video_win = NULL;1.8 +1.9 +static GtkWidget *gtk_video_drawable = NULL;1.10 int video_width = 640;1.11 int video_height = 480;1.13 @@ -221,26 +222,51 @@1.14 return DCKB_NONE;1.15 }1.17 +GtkWidget *video_gtk_create_drawable()1.18 +{1.19 + GtkWidget *drawable = gtk_drawing_area_new();1.20 + GTK_WIDGET_SET_FLAGS(drawable, GTK_CAN_FOCUS|GTK_CAN_DEFAULT);1.21 +1.22 + g_signal_connect( drawable, "expose_event",1.23 + G_CALLBACK(video_gtk_expose_callback), NULL );1.24 + g_signal_connect( drawable, "configure_event",1.25 + G_CALLBACK(video_gtk_resize_callback), NULL );1.26 +1.27 +#ifdef HAVE_GLX1.28 + Display *display = gdk_x11_display_get_xdisplay( gtk_widget_get_display(drawable));1.29 + Screen *screen = gdk_x11_screen_get_xscreen( gtk_widget_get_screen(drawable));1.30 + int screen_no = XScreenNumberOfScreen(screen);1.31 + if( !video_glx_init(display, screen_no) ) {1.32 + ERROR( "Unable to initialize GLX, aborting" );1.33 + exit(3);1.34 + }1.35 +1.36 + XVisualInfo *visual = video_glx_get_visual();1.37 + if( visual != NULL ) {1.38 + GdkVisual *gdkvis = gdk_x11_screen_lookup_visual( gtk_widget_get_screen(drawable), visual->visualid );1.39 + GdkColormap *colormap = gdk_colormap_new( gdkvis, FALSE );1.40 + gtk_widget_set_colormap( drawable, colormap );1.41 + }1.42 +#endif1.43 + gtk_video_drawable = drawable;1.44 + return drawable;1.45 +}1.46 +1.47 gboolean video_gtk_init()1.48 {1.50 - gtk_video_win = gtk_gui_get_renderarea();1.51 - if( gtk_video_win == NULL ) {1.52 + if( gtk_video_drawable == NULL ) {1.53 return FALSE;1.54 }1.56 - g_signal_connect( gtk_video_win, "expose_event",1.57 - G_CALLBACK(video_gtk_expose_callback), NULL );1.58 - g_signal_connect( gtk_video_win, "configure_event",1.59 - G_CALLBACK(video_gtk_resize_callback), NULL );1.60 - video_width = gtk_video_win->allocation.width;1.61 - video_height = gtk_video_win->allocation.height;1.62 + video_width = gtk_video_drawable->allocation.width;1.63 + video_height = gtk_video_drawable->allocation.height;1.64 #ifdef HAVE_OSMESA1.65 video_gdk_init_driver( &display_gtk_driver );1.66 #else1.67 #ifdef HAVE_GLX1.68 - Display *display = gdk_x11_display_get_xdisplay( gtk_widget_get_display(GTK_WIDGET(gtk_video_win)));1.69 - Window window = GDK_WINDOW_XWINDOW( GTK_WIDGET(gtk_video_win)->window );1.70 + Display *display = gdk_x11_display_get_xdisplay( gtk_widget_get_display(GTK_WIDGET(gtk_video_drawable)));1.71 + Window window = GDK_WINDOW_XWINDOW( GTK_WIDGET(gtk_video_drawable)->window );1.72 if( ! video_glx_init_context( display, window ) ||1.73 ! video_glx_init_driver( &display_gtk_driver ) ) {1.74 return FALSE;1.75 @@ -256,36 +282,27 @@1.77 gboolean video_gtk_display_blank( uint32_t colour )1.78 {1.79 - GdkGC *gc = gdk_gc_new(gtk_video_win->window);1.80 + GdkGC *gc = gdk_gc_new(gtk_video_drawable->window);1.81 GdkColor color = {0, ((colour>>16)&0xFF)*257, ((colour>>8)&0xFF)*257, ((colour)&0xFF)*257 };1.82 GdkColormap *cmap = gdk_colormap_get_system();1.83 gdk_colormap_alloc_color( cmap, &color, TRUE, TRUE );1.84 gdk_gc_set_foreground( gc, &color );1.85 gdk_gc_set_background( gc, &color );1.86 - gdk_draw_rectangle( gtk_video_win->window, gc, TRUE, 0, 0, video_width, video_height );1.87 + gdk_draw_rectangle( gtk_video_drawable->window, gc, TRUE, 0, 0, video_width, video_height );1.88 gdk_gc_destroy(gc);1.89 gdk_colormap_free_colors( cmap, &color, 1 );1.90 }1.92 -#ifdef HAVE_GTK_X111.93 -XVisualInfo *video_gtk_get_visual()1.94 -{1.95 -#ifdef HAVE_OSMESA1.96 - return NULL;1.97 -#else1.98 - return video_glx_get_visual();1.99 -#endif1.100 -}1.101 -#endif1.102 -1.103 void video_gtk_shutdown()1.104 {1.105 - if( gtk_video_win != NULL ) {1.106 + if( gtk_video_drawable != NULL ) {1.107 #ifdef HAVE_OSMESA1.108 video_gdk_shutdown();1.109 #else1.110 +#ifdef HAVE_GLX1.111 video_glx_shutdown();1.112 #endif1.113 +#endif1.114 }1.115 #ifdef HAVE_LINUX_JOYSTICK1.116 linux_joystick_shutdown();
2.1 --- a/src/gtkui/main_win.c Wed Apr 16 12:43:52 2008 +00002.2 +++ b/src/gtkui/main_win.c Wed Apr 16 22:54:40 2008 +00002.3 @@ -33,11 +33,6 @@2.4 #include "lxdream.h"2.5 #include "gtkui/gtkui.h"2.7 -#ifdef HAVE_GLX2.8 -#include <gdk/gdkx.h>2.9 -#include "drivers/video_glx.h"2.10 -#endif2.11 -2.13 struct main_window_info {2.14 GtkWidget *window;2.15 @@ -250,26 +245,7 @@2.17 gtk_toolbar_set_style( GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS );2.19 - win->video = gtk_drawing_area_new();2.20 -2.21 -#ifdef HAVE_GLX2.22 - Display *display = gdk_x11_display_get_xdisplay( gtk_widget_get_display(win->window));2.23 - Screen *screen = gdk_x11_screen_get_xscreen( gtk_widget_get_screen(win->window));2.24 - int screen_no = XScreenNumberOfScreen(screen);2.25 - if( !video_glx_init(display, screen_no) ) {2.26 - ERROR( "Unable to initialize GLX, aborting" );2.27 - exit(3);2.28 - }2.29 -2.30 - XVisualInfo *visual = video_gtk_get_visual();2.31 - if( visual != NULL ) {2.32 - GdkVisual *gdkvis = gdk_x11_screen_lookup_visual( gtk_widget_get_screen(win->window), visual->visualid );2.33 - GdkColormap *colormap = gdk_colormap_new( gdkvis, FALSE );2.34 - gtk_widget_set_colormap( win->video, colormap );2.35 - }2.36 -#endif2.37 -2.38 - GTK_WIDGET_SET_FLAGS(win->video, GTK_CAN_FOCUS|GTK_CAN_DEFAULT);2.39 + win->video = video_gtk_create_drawable();2.40 gtk_widget_set_size_request( win->video, 640, 480 );2.41 gtk_widget_set_double_buffered( win->video, FALSE );2.42 frame = gtk_frame_new(NULL);
.