buildable Gtk3 version

the problem lies in GtkGLArea: once video driver provides core 3.2 profile, it uses it, which means, that ogl functions, used by radiant, are mostly disallowed
This commit is contained in:
Garux
2020-06-05 20:53:05 +03:00
parent e357564ff8
commit 9ba4232c41
10 changed files with 165 additions and 49 deletions
+8 -13
View File
@@ -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 \
+106
View File
@@ -28,6 +28,110 @@
#include "igl.h"
#include <gtk/gtk.h>
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 <gtk/gtkglwidget.h>
#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
+2
View File
@@ -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 ){
+4 -3
View File
@@ -1676,7 +1676,8 @@ CamWnd::CamWnd() :
m_Camera( &m_view, CamWndQueueDraw( *this ), CamWnd_selection_motion_freemove( *this ) ),
m_cameraview( m_Camera, &m_view, ReferenceCaller<CamWnd, CamWnd_Update>( *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 ) );
+2 -2
View File
@@ -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 );
}
+17 -5
View File
@@ -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<const char*>( glGetString( GL_VENDOR ) ) << "\n";
globalOutputStream() << "GL_RENDERER: " << reinterpret_cast<const char*>( glGetString( GL_RENDERER ) ) << "\n";
globalOutputStream() << "GL_VERSION: " << reinterpret_cast<const char*>( glGetString( GL_VERSION ) ) << "\n";
globalOutputStream() << "GL_EXTENSIONS: " << reinterpret_cast<const char*>( glGetString( GL_EXTENSIONS ) ) << "\n";
// globalOutputStream() << "GL_EXTENSIONS: " << reinterpret_cast<const char*>( glGetString( GL_EXTENSIONS ) ) << "\n";
QGL_sharedContextCreated( GlobalOpenGL() );
+13 -17
View File
@@ -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 );
+5 -3
View File
@@ -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<const char*>( 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();
}
+4 -3
View File
@@ -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 );
+4 -3
View File
@@ -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 );