pthreads + drawing area = expose event fails
- From: Ray Clouse <ray clouse boeing com>
- To: gtk-list gnome org
- Cc: "Jones, Heiko" <heiko jones boeing com>
- Subject: pthreads + drawing area = expose event fails
- Date: Fri, 20 Feb 2004 11:19:20 -0800
I'm trying to write an app that lets me open multiple pthreaded windows
and do OpenGL in them using the GtkGLExt.  Unfortunately I'm running
into a problem getting the drawable in my expose event.
At first it was just OpenGL stuff, but when I couldn't get the
gldrawable and the glcontext I decided to reduce it to just normal Gdk
drawing and that fails as well.
I made this structure:
typedef struct
{
  GtkWidget *drawing_area;
  GdkGLConfig *glconfig;
  GdkGLContext *glcontext;
  GdkGLDrawable *gldrawable;
} glargs;
I set up the expose event like this:
  glargs *garg;
  if ((garg = (glargs *) calloc(1, sizeof(glargs))) == NULL) {
    printf("Cannot calloc gl args.\n");
    return NULL;
  }
  g_signal_connect(G_OBJECT(garg->drawing_area), "expose_event",
		   G_CALLBACK(expose_event), &garg);
But in my expose event callback, it fails:
gboolean
expose_event(GtkWidget *widget,
      GdkEventExpose   *event,
      gpointer          data)
{
  GdkDrawable *drawable;
  glargs *g1 = (glargs *) data;
  drawable =   g1->drawing_area->window;
  }
}
(grok:3095): Gdk-CRITICAL **: file gdkdraw.c: line 411
(gdk_draw_rectangle): assertion `GDK_IS_GC (gc)' failed
I have realize and configure_event callbacks that get the drawable &
context just fine.
I tested the pthread stuff with a GtkLabel and that works just fine with
a background update thread & everything.  Any ideas?
--
------------------------------------------------------------------------
Ray Clouse
STICS Lab
ray.clouse AT boeing.com			Don't fear the penguins.
clouse AT rayclouse.org
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]