John:
Many thanks for all of your help. The previous stack trace that I gave
you was from a larger program. Here is more of a minimal program to
illustrate the error. I cannot really get a stacktrace now as the
program does not crash.
I am still struggling with being able to get gdb to step into the
libraries so that I can see exactly where in the library the error is
occurring. Note that the pixbuf_ that is returned is not NULL but any
use of it in further code will cause a segfault. Given the error
messages coming from the pixbuf create step... this is not surprising.
How exactly do I compile gtkmm, gdk-pixbuf and glibmm with debugging
support? Seems like it should be simple but no matter where I put the
-ggdb flag, the Makefile seems to ignore it.
jim...
#include <gtkmm/main.h>
#include <gtkmm/box.h>
#include <gtkmm/window.h>
#include <gtkmm/separator.h>
#include <gtkmm/textview.h>
#include <gtkmm.h>
#include <gtkmm/drawingarea.h>
#include <gtkmm/image.h>
#include <gtkmm/stock.h>
#include <iostream>
#include <cairomm/context.h>
#include <gtkmm/button.h>
class Area : public Gtk::DrawingArea
{
public:
Area();
virtual ~Area();
Glib::RefPtr<Gdk::Window> myarea_win_;
protected:
virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
virtual void on_realize();
};
Area::Area(){}
Area::~Area(){}
bool Area::on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
{
return true;
}
void Area::on_realize()
{
// We need to call the base on_realize()
Gtk::DrawingArea::on_realize();
myarea_win_ = get_window();
}
class PlotTest : public Gtk::Window
{
public:
PlotTest();
virtual ~PlotTest();
protected:
Area myarea;
//Signal handlers:
void on_close_clicked();
void on_test_clicked();
//Child widgets:
Gtk::TextView t_view;
Gtk::Box m_Box_Top;
Gtk::Button m_Button_Close;
Gtk::Button m_Button_Test;
};
PlotTest::PlotTest() :
m_Box_Top(Gtk::ORIENTATION_VERTICAL),
m_Button_Close("Close"),
m_Button_Test("Test Pixbuf Code")
{
// Set title and border of the window
set_title("Cairo Test");
set_border_width(0);
add(m_Box_Top);
myarea.set_size_request(500, 300);
m_Box_Top.pack_start(myarea);
m_Box_Top.pack_start(m_Button_Close);
m_Box_Top.pack_start(m_Button_Test);
m_Button_Close.set_can_default();
m_Button_Close.grab_default();
// Connect the clicked signal of the button to
m_Button_Close.signal_clicked().connect(sigc::mem_fun(*this,
&PlotTest::on_close_clicked) );
m_Button_Test.signal_clicked().connect(sigc::mem_fun(*this,
&PlotTest::on_test_clicked) );
show_all();
}
PlotTest::~PlotTest()
{
}
void PlotTest::on_close_clicked()
{
hide(); //to close the application.
}
void PlotTest::on_test_clicked()
{
int winx, winy, winw, winh;
printf("Realized %i\n", myarea.get_realized());
myarea.get_window()->get_geometry(winx, winy, winw, winh);
Glib::RefPtr<Gdk::Pixbuf> pixbuf_ =
Gdk::Pixbuf::create(myarea.myarea_win_, 0,0,winw,winh);
}
int main(int argc, char *argv[])
{
Gtk::Main kit(argc, argv);
PlotTest Prog;
Gtk::Main::run(Prog);
return 0;
}
_______________________________________________
Gtk-osx-devel-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtk-osx-devel-list