mirror of
https://github.com/Garux/netradiant-custom.git
synced 2026-09-28 00:00:03 +02:00
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:
@@ -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 \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ){
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user