Reference to a C++ object in GTK+ callbacks
- From: Paul Santa Maria <paulsm1021 yahoo com>
- To: gtk-app-devel-list gnome org
- Subject: Reference to a C++ object in GTK+ callbacks
- Date: Tue, 13 Dec 2005 16:00:32 -0800 (PST)
Hi -
I'm using the GTK+ 2.6.4 that came with Suse 9.3.  I'm coding in C++, but using the "raw" GTK+ C
libraries.
I'm trying to pass a pointer to one of my C++ classes into a callback, so that I can call a method
on that class.  The code looks like this:
1. less hbaview.h =>
   --------------
class HbaviewApp
{
  ...
private:
  AnimationFile *m_animation;
  ...
class Hbafile : public AnimationFile
{
public:
  Hbafile (GtkWidget *da);
  virtual ~Hbafile ();
  virtual void open (const char *fname);
  virtual void close ();
  virtual void start ();
  ...
2. less HbaviewApp.cpp =>
   -------------------
void init ()
  ...
  GtkWidget *play = 
    gtk_image_menu_item_new_from_stock (
      "gtk-media-play", accel_group);
  gtk_widget_show (play);
  gtk_container_add (GTK_CONTAINER (menu3), play);
  gtk_signal_connect (GTK_OBJECT (play), "activate",
                      G_CALLBACK (play_cb), m_animation);
  ...
3. less callbacks.cpp =>
   ------------------
gboolean
play_cb (gpointer data)
{
  // Deference the object pointer to do the actual work
  AnimationFile *ani = (AnimationFile *)data;
  ani->start ();
}
"ani->start()" works fine outside of the callback.  I know my Animation object has been
successfully created and that "m_animation" points to it before I call gtk_signal_connect().
But it crashes with a signal SIGSEGV, Segmentation fault when the play_cb callback tries to call
ani->start().
Any idea what I might be doing wrong?
Or tips for debugging the problem?
Thanx in advance!
   
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]