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]