To those rolling their own OS/X builds, this may be of interest: On the weekend I spent some time seeing whether it would be possible to get GNUBG to use GTK on OS/X without the need for the X11. I was pleasantly surprised with the minimal effort that was needed to get things to a 95% level.
The project I began looking at was http://gtk-osx.sourceforge.net/ . I was able to build the 2D version of GNUBG without any difficulty. The 3D version is problematic but still usable despite some of the issues. Unfortunately 3D support is lacking because the GTK-OSX project doesn't have GTKGLEXT support by default. By default the GTKGLEXT doesn't support Quartz as a back-end. I began with modifying GTKGLEXT to support Quartz, but soon discovered someone already started such a patch. That patch can be found here: http://juvul.com/stuff/gtkglext-1.2.0.osx-hack.tar.gz Unfortunately GTKGLEXT uses some deprecated functions when building against GTK>=+2.20 used in GTK-OSX, so those had to be fixed. That patch is attached and was borrowed from the folks at Debian. I present this information to those who may be interested in rolling their own builds without X11. At this time there is 1 issue that prevents me from using it in production. Although the Quartz/OpenGL back-end works well enough it does throw some errors on the console. I believe it is because of the way the Quartz/OpenGL contexts are supported. Secondly and less critical is that the program close animation (if you have it on) does not work. Despite that people may still find it very usable. If you use GTK-OSX, you will want to make sure you install GNU LibReadLine on your system - the Apple one has some functionality missing that will cause undefined references. I also installed latest libgmp, sqlite3, and Mesa (built without X and without EGL to get the OpenGL headers). I had some GNUBG ./configure issues regarding the Makefile generated (when compiling with Board3d support) and some headers that got entered improperly. Most likely people will figure out what is wrong with the paths in the generated Makefile and can adjust them manually. If you are having difficulty I can be contacted in email. -- Michael Petch CApp::Sysware Consulting Ltd. OpenPGP FingerPrint=D81C 6A0D 987E 7DA5 3219 6715 466A 2ACE 5CAE 3304
#! /bin/sh /usr/share/dpatch/dpatch-run ## 02_fix_gtk-2.20_deprecated_symbols.dpatch taken from git upstream's repo ## by Gilles Filippini <[email protected]>. ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Upstream git commit: d8f285d1397f6c41099c67e668288eecc1cdae67 ## DP: Eliminate usage of GTK_WIDGET_REALIZED, GTK_WIDGET_TOPLEVEL, and ## DP: GTK_WIDGET_NO_WINDOW for compatibility with Gtk+ >= 2.20. @DPATCH@ --- diff --git a/examples/pixmap-mixed.c b/examples/pixmap-mixed.c index 2346afd..3e53f14 100644 --- a/examples/pixmap-mixed.c +++ b/examples/pixmap-mixed.c @@ -154,7 +154,7 @@ expose_event (GtkWidget *widget, gpointer data) { gdk_draw_drawable (widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + widget->style->fg_gc[gtk_widget_get_state (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, diff --git a/examples/pixmap.c b/examples/pixmap.c index 10e6fc1..a14a1b7 100644 --- a/examples/pixmap.c +++ b/examples/pixmap.c @@ -137,7 +137,7 @@ expose_event (GtkWidget *widget, gpointer data) { gdk_draw_drawable (widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + widget->style->fg_gc[gtk_widget_get_state (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, diff --git a/gtk/gtkglwidget.c b/gtk/gtkglwidget.c index 76a93d6..ca60626 100644 --- a/gtk/gtkglwidget.c +++ b/gtk/gtkglwidget.c @@ -129,7 +129,7 @@ gtk_gl_widget_size_allocate (GtkWidget *widget, * Synchronize OpenGL and window resizing request streams. */ - if (GTK_WIDGET_REALIZED (widget) && private->is_realized) + if (gtk_widget_get_realized (widget) && private->is_realized) { gldrawable = gdk_window_get_gl_drawable (widget->window); gdk_gl_drawable_wait_gdk (gldrawable); @@ -156,7 +156,7 @@ gtk_gl_widget_unrealize (GtkWidget *widget, * Remove OpenGL-capability from widget->window. */ - if (GTK_WIDGET_REALIZED (widget)) + if (gtk_widget_get_realized (widget)) gdk_window_unset_gl_capability (widget->window); private->is_realized = FALSE; @@ -176,7 +176,7 @@ gtk_gl_widget_parent_set (GtkWidget *widget, */ toplevel = gtk_widget_get_toplevel (widget); - if (GTK_WIDGET_TOPLEVEL (toplevel) && !GTK_WIDGET_REALIZED (toplevel)) + if (gtk_widget_is_toplevel (toplevel) && !gtk_widget_get_realized (toplevel)) { GTK_GL_NOTE (MISC, g_message (" - Install colormap to the top-level window.")); @@ -196,7 +196,7 @@ gtk_gl_widget_style_set (GtkWidget *widget, * Set a background of "None" on window to avoid AIX X server crash. */ - if (GTK_WIDGET_REALIZED (widget)) + if (gtk_widget_get_realized (widget)) { GTK_GL_NOTE (MISC, g_message (" - window->bg_pixmap = %p", @@ -252,8 +252,8 @@ gtk_widget_set_gl_capability (GtkWidget *widget, GTK_GL_NOTE_FUNC (); g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); - g_return_val_if_fail (!GTK_WIDGET_NO_WINDOW (widget), FALSE); - g_return_val_if_fail (!GTK_WIDGET_REALIZED (widget), FALSE); + g_return_val_if_fail (gtk_widget_get_has_window (widget), FALSE); + g_return_val_if_fail (!gtk_widget_get_realized (widget), FALSE); g_return_val_if_fail (GDK_IS_GL_CONFIG (glconfig), FALSE); /* @@ -434,7 +434,7 @@ gtk_widget_create_gl_context (GtkWidget *widget, GTK_GL_NOTE_FUNC (); g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), NULL); + g_return_val_if_fail (gtk_widget_get_realized (widget), NULL); gldrawable = gdk_window_get_gl_drawable (widget->window); if (gldrawable == NULL) @@ -476,7 +476,7 @@ gtk_widget_get_gl_context (GtkWidget *widget) GLWidgetPrivate *private; g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), NULL); + g_return_val_if_fail (gtk_widget_get_realized (widget), NULL); private = g_object_get_qdata (G_OBJECT (widget), quark_gl_private); if (private == NULL) @@ -503,7 +503,7 @@ GdkGLWindow * gtk_widget_get_gl_window (GtkWidget *widget) { g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), NULL); + g_return_val_if_fail (gtk_widget_get_realized (widget), NULL); return gdk_window_get_gl_window (widget->window); } -- cgit v0.8.3.1
_______________________________________________ Bug-gnubg mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-gnubg
