diff --git a/Makefile b/Makefile index e271e855..34ba27cd 100644 --- a/Makefile +++ b/Makefile @@ -67,15 +67,12 @@ LIBS_XML ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) li CPPFLAGS_PNG ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) libpng --cflags $(STDERR_TO_DEVNULL)) LIBS_PNG ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) libpng --libs-only-L $(STDERR_TO_DEVNULL)) \ $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) libpng --libs-only-l $(STDERR_TO_DEVNULL)) -CPPFLAGS_GTK ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-2.0 --cflags $(STDERR_TO_DEVNULL)) -LIBS_GTK ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-2.0 --libs-only-L $(STDERR_TO_DEVNULL)) \ - $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-2.0 --libs-only-l $(STDERR_TO_DEVNULL)) +CPPFLAGS_GTK ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-3.0 --cflags $(STDERR_TO_DEVNULL)) +LIBS_GTK ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-3.0 --libs-only-L $(STDERR_TO_DEVNULL)) \ + $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-3.0 --libs-only-l $(STDERR_TO_DEVNULL)) CPPFLAGS_PANGOFT2 ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) pangoft2 --cflags $(STDERR_TO_DEVNULL)) LIBS_PANGOFT2 ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) pangoft2 --libs-only-L $(STDERR_TO_DEVNULL)) \ $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) pangoft2 --libs-only-l $(STDERR_TO_DEVNULL)) -CPPFLAGS_GTKGLEXT ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtkglext-1.0 --cflags $(STDERR_TO_DEVNULL)) -LIBS_GTKGLEXT ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtkglext-1.0 --libs-only-L $(STDERR_TO_DEVNULL)) \ - $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtkglext-1.0 --libs-only-l $(STDERR_TO_DEVNULL)) CPPFLAGS_GL ?= LIBS_GL ?= -lGL # -lopengl32 on Win32 CPPFLAGS_DL ?= @@ -98,7 +95,7 @@ DEPENDENCIES_CHECK ?= quiet endif # these are used on Win32 only -GTKDIR ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-2.0 --variable=prefix $(STDERR_TO_DEVNULL)) +GTKDIR ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) gtk+-3.0 --variable=prefix $(STDERR_TO_DEVNULL)) WHICHDLL ?= which DLLINSTALL ?= install-dlls.sh @@ -240,7 +237,6 @@ ifeq ($(OS),Darwin) # workaround: http://developer.apple.com/qa/qa2007/qa1567.html LIBS_GL += -lX11 -dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib - LIBS_GTKGLEXT += -lX11 -dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib # workaround: we have no "ldd" for OS X, so... LDD = OTOOL = otool @@ -379,9 +375,8 @@ dependencies-check: checkheader libxml2-dev libxml/xpath.h xmlXPathInit "$(CPPFLAGS_XML)" "$(LIBS_XML)"; \ checkheader libpng12-dev png.h png_create_read_struct "$(CPPFLAGS_PNG)" "$(LIBS_PNG)"; \ checkheader "mesa-common-dev (or another OpenGL library)" GL/gl.h glClear "$(CPPFLAGS_GL)" "$(LIBS_GL)"; \ - checkheader libgtk2.0-dev gtk/gtkdialog.h gtk_dialog_run "$(CPPFLAGS_GTK)" "$(LIBS_GTK)"; \ + checkheader libgtk3.0-dev gtk/gtk.h gtk_dialog_run "$(CPPFLAGS_GTK)" "$(LIBS_GTK)"; \ checkheader libpango1.0-dev pango/pangoft2.h pango_ft2_font_map_new "$(CPPFLAGS_PANGOFT2)" "$(LIBS_PANGOFT2)"; \ - checkheader libgtkglext1-dev gtk/gtkglwidget.h gtk_widget_get_gl_context "$(CPPFLAGS_GTKGLEXT)" "$(LIBS_GTKGLEXT)"; \ [ "$(OS)" != "Win32" ] && checkheader libc6-dev dlfcn.h dlopen "$(CPPFLAGS_DL)" "$(LIBS_DL)"; \ checkheader zlib1g-dev zlib.h zlibVersion "$(CPPFLAGS_ZLIB)" "$(LIBS_ZLIB)"; \ [ "$$failed" = "0" ] && $(ECHO) All required libraries have been found! @@ -661,8 +656,8 @@ $(INSTALLDIR)/q3data.$(EXE): \ $(if $(findstring $(OS),Win32),icons/q3data.o,) \ $(INSTALLDIR)/radiant.$(EXE): LDFLAGS_EXTRA := $(MWINDOWS) -$(INSTALLDIR)/radiant.$(EXE): LIBS_EXTRA := $(LIBS_GL) $(LIBS_DL) $(LIBS_XML) $(LIBS_GLIB) $(LIBS_GTK) $(LIBS_GTKGLEXT) $(LIBS_ZLIB) $(LIBS_PANGOFT2) -$(INSTALLDIR)/radiant.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_GL) $(CPPFLAGS_DL) $(CPPFLAGS_XML) $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) $(CPPFLAGS_GTKGLEXT) $(CPPFLAGS_PANGOFT2) -Ilibs -Iinclude +$(INSTALLDIR)/radiant.$(EXE): LIBS_EXTRA := $(LIBS_GL) $(LIBS_DL) $(LIBS_XML) $(LIBS_GLIB) $(LIBS_GTK) $(LIBS_ZLIB) $(LIBS_PANGOFT2) +$(INSTALLDIR)/radiant.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_GL) $(CPPFLAGS_DL) $(CPPFLAGS_XML) $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) $(CPPFLAGS_PANGOFT2) -Ilibs -Iinclude $(INSTALLDIR)/radiant.$(EXE): \ radiant/autosave.o \ radiant/brushmanip.o \ @@ -769,7 +764,7 @@ libprofile.$(A): \ libs/profile/file.o \ libs/profile/profile.o \ -libgtkutil.$(A): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) $(CPPFLAGS_GTKGLEXT) $(CPPFLAGS_PANGOFT2) -Ilibs -Iinclude +libgtkutil.$(A): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) $(CPPFLAGS_PANGOFT2) -Ilibs -Iinclude libgtkutil.$(A): \ libs/gtkutil/accelerator.o \ libs/gtkutil/button.o \ diff --git a/libs/gtkutil/glwidget.cpp b/libs/gtkutil/glwidget.cpp index 3012f6b2..d1ffcb05 100644 --- a/libs/gtkutil/glwidget.cpp +++ b/libs/gtkutil/glwidget.cpp @@ -28,6 +28,110 @@ #include "igl.h" #include + + +void ( *GLWidget_sharedContextCreated )() = 0; +void ( *GLWidget_sharedContextDestroyed )() = 0; + + +unsigned int g_context_count = 0; + +namespace +{ +GtkWidget* g_shared = 0; +} + +GdkGLContext* glwidget_context_created( GtkGLArea *area ){ + GdkGLContext *context = gtk_gl_area_get_context( area ); + ASSERT_NOTNULL( context ); + gdk_gl_context_set_forward_compatible( context, FALSE ); + return context; +} + +void glwidget_context_realized( GtkWidget* widget, gpointer data ){ + ASSERT_MESSAGE( gtk_gl_area_get_error( GTK_GL_AREA( widget ) ) == NULL, "gtk_gl_area_get_error( GTK_GL_AREA( widget ) ) != NULL" ); + GdkGLContext *context = gtk_gl_area_get_context( GTK_GL_AREA( widget ) ); + ASSERT_NOTNULL( context ); + //gdk_gl_context_set_forward_compatible( context, FALSE ); + globalOutputStream() << gdk_gl_context_get_forward_compatible( context ) << " gdk_gl_context_get_forward_compatible( context )\n"; + globalOutputStream() << gdk_gl_context_get_use_es( context ) << " gdk_gl_context_get_use_es( context )\n"; + globalOutputStream() << gdk_gl_context_is_legacy( context ) << " gdk_gl_context_is_legacy( context )\n"; + //ASSERT_MESSAGE( gdk_gl_context_get_forward_compatible( context ), "!gdk_gl_context_get_forward_compatible( context )" ); //not + //ASSERT_MESSAGE( gdk_gl_context_get_use_es( context ), "!gdk_gl_context_get_use_es( context )" ); //doesn't + //ASSERT_MESSAGE( gdk_gl_context_is_legacy( context ), "!gdk_gl_context_is_legacy( context )" ); //is not + if ( ++g_context_count == 1 ) { + g_shared = widget; + g_object_ref( G_OBJECT( g_shared ) ); + + gtk_gl_area_make_current( GTK_GL_AREA( g_shared ) ); + GlobalOpenGL().contextValid = true; + + GLWidget_sharedContextCreated(); + } +} + +void glwidget_context_destroyed( GtkWidget* widget, gpointer data ){ + if ( --g_context_count == 0 ) { + GlobalOpenGL().contextValid = false; + + GLWidget_sharedContextDestroyed(); + + g_object_unref( G_OBJECT( g_shared ) ); + g_shared = 0; + } +} + +gboolean glwidget_enable_gl( GtkWidget* widget, GtkWidget* widget2, gpointer data ){ +/* if ( widget2 == 0 && !gtk_widget_is_gl_capable( widget ) ) { + GdkGLConfig* glconfig = ( g_object_get_data( G_OBJECT( widget ), "zbuffer" ) ) ? glconfig_new_with_depth() : glconfig_new(); + ASSERT_MESSAGE( glconfig != 0, "failed to create OpenGL config" ); + + gtk_widget_set_gl_capability( widget, glconfig, g_shared != 0 ? gtk_widget_get_gl_context( g_shared ) : 0, TRUE, GDK_GL_RGBA_TYPE ); + + gtk_widget_realize( widget ); + if ( g_shared == 0 ) { + g_shared = widget; + } + + // free glconfig? + }*/ + return FALSE; +} + +GtkWidget* glwidget_new( gboolean zbuffer ){ + GtkWidget* widget = gtk_gl_area_new(); + gtk_gl_area_set_has_depth_buffer( GTK_GL_AREA( widget ), zbuffer ); + gtk_gl_area_set_auto_render( GTK_GL_AREA( widget ), FALSE ); +/// gtk_gl_area_set_required_version( GTK_GL_AREA( widget ), 2, 0 ); +/// g_signal_connect( G_OBJECT( widget ), "hierarchy-changed", G_CALLBACK( glwidget_enable_gl ), 0 ); + +// g_signal_connect( G_OBJECT( widget ), "create-context", G_CALLBACK( glwidget_context_created ), 0 ); + g_signal_connect( G_OBJECT( widget ), "realize", G_CALLBACK( glwidget_context_realized ), 0 ); + g_signal_connect( G_OBJECT( widget ), "unrealize", G_CALLBACK( glwidget_context_destroyed ), 0 ); + + return widget; +} + +void glwidget_destroy_context( GtkWidget *widget ){ +} + +void glwidget_create_context( GtkWidget *widget ){ +} + +void glwidget_swap_buffers( GtkWidget *widget ){ +// GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable( widget ); +// gdk_gl_drawable_swap_buffers( gldrawable ); +} + +gboolean glwidget_make_current( GtkWidget *widget ){ +// GdkGLContext *glcontext = gtk_widget_get_gl_context( widget ); +// GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable( widget ); +// return gdk_gl_drawable_gl_begin( gldrawable, glcontext ); + return FALSE; +} + + +#if 0 #include #include "pointer.h" @@ -255,3 +359,5 @@ gboolean glwidget_make_current( GtkWidget *widget ){ GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable( widget ); return gdk_gl_drawable_gl_begin( gldrawable, glcontext ); } + +#endif diff --git a/libs/gtkutil/menu.cpp b/libs/gtkutil/menu.cpp index 70cd3106..4ab0d208 100644 --- a/libs/gtkutil/menu.cpp +++ b/libs/gtkutil/menu.cpp @@ -223,6 +223,7 @@ void accelerator_name( const Accelerator& accelerator, GString* gstring ){ } void menu_item_set_accelerator( GtkMenuItem* item, Accelerator accelerator ){ +#if 0 GString* gstring = g_string_new( nullptr ); g_string_append( gstring, " " ); accelerator_name( accelerator, gstring ); @@ -232,6 +233,7 @@ void menu_item_set_accelerator( GtkMenuItem* item, Accelerator accelerator ){ accel_label->accel_string = g_string_free( gstring, FALSE ); gtk_widget_queue_resize( GTK_WIDGET( accel_label ) ); +#endif } void menu_item_add_accelerator( GtkMenuItem* item, Accelerator accelerator ){ diff --git a/radiant/camwindow.cpp b/radiant/camwindow.cpp index f91bac29..7fb84ea8 100644 --- a/radiant/camwindow.cpp +++ b/radiant/camwindow.cpp @@ -1676,7 +1676,8 @@ CamWnd::CamWnd() : m_Camera( &m_view, CamWndQueueDraw( *this ), CamWnd_selection_motion_freemove( *this ) ), m_cameraview( m_Camera, &m_view, ReferenceCaller( *this ) ), m_fbo( 0 ), - m_gl_widget( glwidget_new( TRUE ) ), +// m_gl_widget( glwidget_new( TRUE ) ), + m_gl_widget( gtk_button_new_with_label( " hi ") ), m_window_observer( NewWindowObserver() ), m_deferredDraw( WidgetQueueDrawCaller( *m_gl_widget ) ), m_deferred_motion( selection_motion, m_window_observer ), @@ -1700,8 +1701,8 @@ CamWnd::CamWnd() : gtk_widget_set_events( m_gl_widget, GDK_DESTROY | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK ); gtk_widget_set_can_focus( m_gl_widget, TRUE ); - m_sizeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "size_allocate", G_CALLBACK( camera_size_allocate ), this ); - m_exposeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "expose_event", G_CALLBACK( camera_expose ), this ); +/// m_sizeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "size_allocate", G_CALLBACK( camera_size_allocate ), this ); +/// m_exposeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "expose_event", G_CALLBACK( camera_expose ), this ); Map_addValidCallback( g_map, DeferredDrawOnMapValidChangedCaller( m_deferredDraw ) ); diff --git a/radiant/main.cpp b/radiant/main.cpp index 53ffdbd4..5e461164 100644 --- a/radiant/main.cpp +++ b/radiant/main.cpp @@ -209,9 +209,9 @@ void error_redirect( const gchar *domain, GLogLevelFlags log_level, const gchar globalErrorStream() << buf << "\n"; // FIXME why are warnings is_fatal? -#ifndef _DEBUG +//#ifndef _DEBUG if ( is_fatal ) -#endif +//#endif ERROR_MESSAGE( "GTK+ error: " << buf ); } diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp index 712c4e49..91dd9961 100644 --- a/radiant/mainframe.cpp +++ b/radiant/mainframe.cpp @@ -2921,10 +2921,22 @@ GtkWindow* create_splash(){ gtk_container_add( GTK_CONTAINER( window ), GTK_WIDGET( image ) ); if( gtk_image_get_storage_type( image ) == GTK_IMAGE_PIXBUF ){ - GdkBitmap* mask; - GdkPixbuf* pix = gtk_image_get_pixbuf( image ); - gdk_pixbuf_render_pixmap_and_mask( pix, NULL, &mask, 255 ); - gtk_widget_shape_combine_mask ( GTK_WIDGET( window ), mask, 0, 0 ); + GdkPixbuf *pixbuf = gtk_image_get_pixbuf( image ); + + cairo_surface_t *surface = cairo_image_surface_create( CAIRO_FORMAT_A1, + gdk_pixbuf_get_width( pixbuf ), + gdk_pixbuf_get_height( pixbuf ) ); + + cairo_t *cr = cairo_create( surface ); + gdk_cairo_set_source_pixbuf( cr, pixbuf, 0, 0 ); + cairo_paint( cr ); + cairo_destroy( cr ); + + cairo_region_t *region = gdk_cairo_region_create_from_surface( surface ); + gtk_widget_shape_combine_region( GTK_WIDGET( window ), region ); + cairo_region_destroy(region); + + cairo_surface_destroy(surface); } gtk_widget_set_size_request( GTK_WIDGET( window ), -1, -1 ); @@ -3475,7 +3487,7 @@ void GlobalGL_sharedContextCreated(){ globalOutputStream() << "GL_VENDOR: " << reinterpret_cast( glGetString( GL_VENDOR ) ) << "\n"; globalOutputStream() << "GL_RENDERER: " << reinterpret_cast( glGetString( GL_RENDERER ) ) << "\n"; globalOutputStream() << "GL_VERSION: " << reinterpret_cast( glGetString( GL_VERSION ) ) << "\n"; - globalOutputStream() << "GL_EXTENSIONS: " << reinterpret_cast( glGetString( GL_EXTENSIONS ) ) << "\n"; +// globalOutputStream() << "GL_EXTENSIONS: " << reinterpret_cast( glGetString( GL_EXTENSIONS ) ) << "\n"; QGL_sharedContextCreated( GlobalOpenGL() ); diff --git a/radiant/modelwindow.cpp b/radiant/modelwindow.cpp index 9b678593..c16ea4c8 100644 --- a/radiant/modelwindow.cpp +++ b/radiant/modelwindow.cpp @@ -582,7 +582,7 @@ public: } void queueDraw() const { if ( m_gl_widget != nullptr ) - gtk_widget_queue_draw( m_gl_widget ); + gtk_gl_area_queue_render( GTK_GL_AREA( m_gl_widget ) ); } bool m_originInvalid = true; void validate(){ @@ -953,24 +953,20 @@ void ModelBrowser_render(){ } -gboolean ModelBrowser_size_allocate( GtkWidget* widget, GtkAllocation* allocation, ModelBrowser* modelBrowser ){ - modelBrowser->fbo_get()->reset( allocation->width, allocation->height, modelBrowser->m_MSAA, true ); - modelBrowser->m_width = allocation->width; - modelBrowser->m_height = allocation->height; +void ModelBrowser_size_allocate( GtkGLArea* area, gint width, gint height, ModelBrowser* modelBrowser ){ + modelBrowser->fbo_get()->reset( width, height, modelBrowser->m_MSAA, true ); + modelBrowser->m_width = width; + modelBrowser->m_height = height; modelBrowser->m_originInvalid = true; modelBrowser->forEachModelInstance( models_set_transforms() ); - modelBrowser->queueDraw(); - return FALSE; +// modelBrowser->queueDraw(); } -gboolean ModelBrowser_expose( GtkWidget* widget, GdkEventExpose* event, ModelBrowser* modelBrowser ){ - if ( glwidget_make_current( modelBrowser->m_gl_widget ) ) { - GlobalOpenGL_debugAssertNoErrors(); - ModelBrowser_render(); - GlobalOpenGL_debugAssertNoErrors(); - glwidget_swap_buffers( modelBrowser->m_gl_widget ); - } - return FALSE; +gboolean ModelBrowser_expose( GtkGLArea* area, GdkGLContext* context, ModelBrowser* modelBrowser ){ + GlobalOpenGL_debugAssertNoErrors(); + ModelBrowser_render(); + GlobalOpenGL_debugAssertNoErrors(); + return TRUE; } @@ -1325,8 +1321,8 @@ GtkWidget* ModelBrowser_constructWindow( GtkWindow* toplevel ){ gtk_table_attach_defaults( GTK_TABLE( table ), w, 1, 2, 0, 1 ); gtk_widget_show( w ); - g_ModelBrowser.m_sizeHandler = g_signal_connect( G_OBJECT( w ), "size_allocate", G_CALLBACK( ModelBrowser_size_allocate ), &g_ModelBrowser ); - g_ModelBrowser.m_exposeHandler = g_signal_connect( G_OBJECT( w ), "expose_event", G_CALLBACK( ModelBrowser_expose ), &g_ModelBrowser ); + g_ModelBrowser.m_sizeHandler = g_signal_connect( G_OBJECT( w ), "resize", G_CALLBACK( ModelBrowser_size_allocate ), &g_ModelBrowser ); + g_ModelBrowser.m_exposeHandler = g_signal_connect( G_OBJECT( w ), "render", G_CALLBACK( ModelBrowser_expose ), &g_ModelBrowser ); g_signal_connect( G_OBJECT( w ), "button_press_event", G_CALLBACK( ModelBrowser_button_press ), &g_ModelBrowser ); g_signal_connect( G_OBJECT( w ), "button_release_event", G_CALLBACK( ModelBrowser_button_release ), &g_ModelBrowser ); diff --git a/radiant/qgl.cpp b/radiant/qgl.cpp index 7888b549..3bd1826f 100644 --- a/radiant/qgl.cpp +++ b/radiant/qgl.cpp @@ -537,7 +537,7 @@ int QGL_Init( OpenGLBinding& table ){ qwglGetProcAddress = wglGetProcAddress; #elif defined( XWINDOWS ) qglXGetProcAddressARB = (glXGetProcAddressARBProc)dlsym( RTLD_DEFAULT, "glXGetProcAddressARB" ); - if ( ( qglXQueryExtension == 0 ) || ( qglXQueryExtension( GDK_DISPLAY(),0,0 ) != True ) ) { + if ( ( qglXQueryExtension == 0 ) || ( qglXQueryExtension( gdk_x11_get_default_xdisplay(),0,0 ) != True ) ) { return 0; } #else @@ -1499,11 +1499,13 @@ void QGL_assertNoErrors( const char *file, int line ){ { const char* errorString = reinterpret_cast( qgluErrorString( error ) ); if ( error == GL_OUT_OF_MEMORY ) { - ERROR_MESSAGE( "OpenGL out of memory error at " << file << ":" << line << ": " << errorString ); +// ERROR_MESSAGE( "OpenGL out of memory error at " << file << ":" << line << ": " << errorString ); + globalErrorStream() << "OpenGL out of memory error at " << file << ":" << line << ": " << errorString << "\n"; } else { - ERROR_MESSAGE( "OpenGL error at " << file << ":" << line << ": " << errorString ); +// ERROR_MESSAGE( "OpenGL error at " << file << ":" << line << ": " << errorString ); + globalErrorStream() << "OpenGL error at " << file << ":" << line << ": " << errorString << "\n"; } error = GlobalOpenGL().m_glGetError(); } diff --git a/radiant/texwindow.cpp b/radiant/texwindow.cpp index f1ae4ecc..43156397 100644 --- a/radiant/texwindow.cpp +++ b/radiant/texwindow.cpp @@ -2142,7 +2142,8 @@ GtkWidget* TextureBrowser_constructWindow( GtkWindow* toplevel ){ #if NV_DRIVER_GAMMA_BUG GtkWidget* w = g_TextureBrowser.m_gl_widget = glwidget_new( TRUE ); #else - GtkWidget* w = g_TextureBrowser.m_gl_widget = glwidget_new( FALSE ); +// GtkWidget* w = g_TextureBrowser.m_gl_widget = glwidget_new( FALSE ); + GtkWidget* w = g_TextureBrowser.m_gl_widget = gtk_button_new_with_label( " hi "); #endif g_object_ref( G_OBJECT( w ) ); @@ -2152,8 +2153,8 @@ GtkWidget* TextureBrowser_constructWindow( GtkWindow* toplevel ){ gtk_table_attach_defaults( GTK_TABLE( table ), w, 1, 2, 1, 2 ); gtk_widget_show( w ); - g_TextureBrowser.m_sizeHandler = g_signal_connect( G_OBJECT( w ), "size_allocate", G_CALLBACK( TextureBrowser_size_allocate ), &g_TextureBrowser ); - g_TextureBrowser.m_exposeHandler = g_signal_connect( G_OBJECT( w ), "expose_event", G_CALLBACK( TextureBrowser_expose ), &g_TextureBrowser ); +/// g_TextureBrowser.m_sizeHandler = g_signal_connect( G_OBJECT( w ), "size_allocate", G_CALLBACK( TextureBrowser_size_allocate ), &g_TextureBrowser ); +/// g_TextureBrowser.m_exposeHandler = g_signal_connect( G_OBJECT( w ), "expose_event", G_CALLBACK( TextureBrowser_expose ), &g_TextureBrowser ); g_signal_connect( G_OBJECT( w ), "button_press_event", G_CALLBACK( TextureBrowser_button_press ), &g_TextureBrowser ); g_signal_connect( G_OBJECT( w ), "button_release_event", G_CALLBACK( TextureBrowser_button_release ), &g_TextureBrowser ); diff --git a/radiant/xywindow.cpp b/radiant/xywindow.cpp index b7435e0e..fa095147 100644 --- a/radiant/xywindow.cpp +++ b/radiant/xywindow.cpp @@ -673,7 +673,8 @@ void XYWnd_CameraMoved( XYWnd& xywnd ){ XYWnd::XYWnd() : #if NV_DRIVER_GAMMA_BUG - m_gl_widget( glwidget_new( TRUE ) ), +// m_gl_widget( glwidget_new( TRUE ) ), + m_gl_widget( gtk_button_new_with_label( " hi ") ), #else m_gl_widget( glwidget_new( FALSE ) ), #endif @@ -716,8 +717,8 @@ XYWnd::XYWnd() : gtk_widget_set_events( m_gl_widget, GDK_DESTROY | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK ); gtk_widget_set_can_focus( m_gl_widget, TRUE ); - m_sizeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "size_allocate", G_CALLBACK( xywnd_size_allocate ), this ); - m_exposeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "expose_event", G_CALLBACK( xywnd_expose ), this ); +/// m_sizeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "size_allocate", G_CALLBACK( xywnd_size_allocate ), this ); +/// m_exposeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "expose_event", G_CALLBACK( xywnd_expose ), this ); g_signal_connect( G_OBJECT( m_gl_widget ), "button_press_event", G_CALLBACK( xywnd_button_press ), this ); g_signal_connect( G_OBJECT( m_gl_widget ), "button_release_event", G_CALLBACK( xywnd_button_release ), this );