From: s d. <syl...@ya...> - 2008-12-27 19:55:22
|
Hi Sanak, OK, thanks for the feedback. So this whole pixmap trick might be overkill! Bellow is a patch to capture the spirit of both of your patchs. It's a bit higher in the GTK food chain. It basically grab the glcontext for share_list at realize time. No need for gv_view_area_get_share_list() then. But I can't test it on Windows .. Sylvain. ------------>8------------------------ --- gvviewarea.c.orig 2008-12-27 13:50:40.000000000 -0500 +++ gvviewarea.c.new 2008-12-27 14:14:19.000000000 -0500 @@ -363,19 +363,19 @@ klass->view_state_changed = NULL; } +static GdkGLContext *_share_list = NULL; + static void gv_view_area_init(GvViewArea *view) { - GdkGLContext *glcontext = NULL; - GdkGLConfig *glconfig; - - /* ---- Obtain shared GL context ---- */ - glcontext = gv_view_area_get_share_list(view); - glconfig = gdk_gl_context_get_gl_config(glcontext); - + GdkGLConfig *glconfig = gdk_gl_config_new_by_mode (GDK_GL_MODE_RGB | + GDK_GL_MODE_DEPTH | + GDK_GL_MODE_DOUBLE); + /* ---- Enable GL capability ---- */ gtk_widget_set_gl_capability (GTK_WIDGET(view), glconfig, - glcontext, TRUE, GDK_GL_RGBA_TYPE); + _share_list, TRUE, GDK_GL_RGBA_TYPE); + view->state.tx = view->state.ty = view->state.rot = 0.0; view->state.zoom = 0.0; @@ -1992,6 +1992,10 @@ g_return_if_fail(GTK_WIDGET_REALIZED(widget)); + if (NULL==_share_list && gtk_widget_is_gl_capable(widget)) { + _share_list = gtk_widget_get_gl_context(widget); + } + /* Make gl area current so layers can create gl handles */ if (!gv_view_area_make_current(view)) return; --- On Sat, 12/27/08, Sanak <geo...@gm...> wrote: > From: Sanak <geo...@gm...> > Subject: Re: [Openev-discuss] "gv_view_area_get_share_list" function failed on OpenEV2 Windows environment > To: ope...@li..., syl...@ya... > Date: Saturday, December 27, 2008, 6:24 PM > Hi Sylvain, > > I had checked linked gv.lib, and the dependency > libraries(GTK+), but the > result was the same. > > I think that the better way is that the pending code is > used for only > recovery from failure of the > "gv_view_area_get_share_list" function. > > After apply the following modification, testmain and openev > works fine on my > Windows environment. > > =================================================================== > --- gvviewarea.c (revision 104) > +++ gvviewarea.c (working copy) > @@ -371,7 +371,14 @@ > > /* ---- Obtain shared GL context ---- */ > glcontext = gv_view_area_get_share_list(view); > - glconfig = gdk_gl_context_get_gl_config(glcontext); > + if (glcontext != NULL) { > + glconfig = > gdk_gl_context_get_gl_config(glcontext); > + } else { > + g_print("couldn't get share list. use old > mode.\n"); > + glconfig = gdk_gl_config_new_by_mode > (GDK_GL_MODE_RGB | > + > GDK_GL_MODE_DEPTH | > + > GDK_GL_MODE_DOUBLE); > + } > > /* ---- Enable GL capability ---- */ > gtk_widget_set_gl_capability (GTK_WIDGET(view), > glconfig, > > =================================================================== > > Regards, > > Sanak. > > 2008/12/26 s duclos <syl...@ya...> > > > Hi, > > > > I had the same errors as you in: > > OpenEV2_2008122501_svn-trunk_r104.PNG (44KB), > > > > Do you have "ldd" or something equivalent .. > I used that > > to find the libraries dependency. This is how I found > that my own > > version of testmain was linking to gtk-1.2 as well as > gtk-2.0. > > > > Maybe your testmain is using an old libgv.so! > > > > > > I just made a fresh build from svn openev2/trunk, my > testmain output > > is the same as you in: > > OpenEV2_2008122501_apply_pending_source.PNG (29KB) > > > > > > This what I did to the Makefiles so that it compile on > my machine: > > > > openev2/trunk/src/lib/gv/Makefile: > > -removed gv_override.c \ > > -add CC += -fPIC > > > > openev2/trunk/resource/mklocal/Linux: > > -remove -levtess (in your case this would be in > CYGWIN..) > > > > > > > > > > Then I went into openev2/trunk/src and run 'make > install' > > > > I putted libgv.so in LD_LIBRARY_PATH: > > $sudo cp ../output/lib/lib.Linux/libgv.so > /usr/local/lib > > > > Then I just run testmain: > > $ ../output/bin/bin.Linux/testmain > > > > > > > > This is not a final solution .. but it might give us > clue as of > > what is going wrong on your side. > > > > I tought that GTK2 (and so OpenEV2) added some sort of > 'nativeness' > > to openev on win32 .. so this puzzling! > > > > > > Thanks, > > > > Sylvain. > > > > > > --- On Thu, 12/25/08, Sanak <geo...@gm...> > wrote: > > > > > From: Sanak <geo...@gm...> > > > Subject: Re: [Openev-discuss] > "gv_view_area_get_share_list" function > > failed on OpenEV2 Windows environment > > > To: ope...@li... > > > Date: Thursday, December 25, 2008, 10:15 AM > > > Hi, > > > > > > I had build and executed the > src/cc/testmain/testmain.c on > > > my Windows > > > environment, and the result was the same.(see > attach > > > images) > > > > > > I don't know that the cause is the graphic > board > > > problem, or the GtkGLExt > > > Windows version's problem. > > > > > > My environment details is as follows. > > > > > > CPU: Intel Core2 Quad Q9450 > > > OS: Windows XP SP3 > > > Graphic board: NVIDIA GeForce 9800 GT > > > Compiler: Microsoft Visual Studio.NET 2003 SP1 > > > Gtk+: 2.12.9-win32-2 (include GtkGLExt) > > > Gdal: 1.6.0 > > > Python: 2.5.1 > > > PyCairo: 1.4.12-1.win32-py25 > > > PyGObject: 2.14.1-1.win32-py2.5 > > > PyGtk: 2.12.1-2.win32-py25 > > > Numpy: 1.2.1-win32-superpack-python25 > > > > > > Regards, > > > > > > Sanak. > > > > > > 2008/12/25 Mario Beauchamp > <st...@gm...> > > > > > > > Hi Sylvain, > > > > > > > > On Wed, Dec 24, 2008 at 11:43 AM, s duclos > > > <syl...@ya...> > > > > wrote: > > > > > > > > > > Wait! try building > openev2/trunk/src/cc/testmain > > > (you might need > > > > > to fix the config in resource/, for > instance I > > > had to remove -ltess > > > > > and also fix the include path when > building > > > libgv.so) > > > > > > > > Sorry, I didn't touch the makefiles... I > find it > > > easier to manage the > > > > build/install process with setup.py. > > > > I'll be glad to commit any modifications > you make. > > > > > > > > > Then run ./testmain to see what happen > .. if > > > nothing goes wrong then > > > > > the problem is in the libs deps above > libgv.so. > > > > > > > > Also, I figured that libgv.so (does anyone > link to > > > it?) was not > > > > necessary for OpenEV that's why setup.py > only > > > builds _gv.so. > > > > Again, if any changes are necessary in the > makefiles > > > to make that > > > > work, pass them along. > > > > > > > > > For instance, I was pulling somehow > libgtk-1.2.so > > > and GTK got all > > > > > confused in > gv_view_area_get_share_list() and > > > going the old way > > > > > didn't fix the problem. > > > > > > > > Ah I see! Maybe that was the problem right > from the > > > start! > > > > > > > > > Testmain sit right above libgv.so and > it does a > > > gv_view_area_new() call > > > > > right from the start. This call, in > turn, trigger > > > Mario's hack to pull a > > > > > glcontext from a pixmap in a platform > neutral way > > > (petty cool in fact:). > > > > > > > > Actually, that was Vexcell's hack which > they found > > > on gtkglext ml ;) > > > > > > > > > Anyway I can confirm that testmain in > svn trunk > > > work on a fairly recent > > > > > Ubuntu AMD 64. > > > > > > > > Cool! I'm also running it on a x86_64. > > > > > > > > Thanks for jumping in Sylvain! > > > > > > > > cheers > > > > -- > > > > Mario B. > > > > > > > > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > > > Openev-discuss mailing list > > > Ope...@li... > > > > https://lists.sourceforge.net/lists/listinfo/openev-discuss > > > > > > > > |