« Return to Thread: Crash when calling Gdk::Drawable::draw_pixbuf

Re: Crash when calling Gdk::Drawable::draw_pixbuf

by Falk Schilling :: Rate this Message:

Reply to Author | View in Thread


Ok, I now tried to cope with Gdk::Pixmap. I now use the following code
in the constructor of my derived Gtk::Window.

m_imgcol is an object of my ImageCollection class, that contains
pointers to rdcnnsim::Image* (derivate of Gtk::Image), accessible via
the image(m,n)-method (an analog approach is used for Gdk::Pixbuf and
now Gdk::Pixmap, except that I use Glib::RefPtr<> for the members there).


for ( int i=0 ; i < static_cast<int>(RDCNNS_NUMBER); i++)
   for ( int j=0; j< static_cast<int>(IMAGES_NUMBER); j++)
        {
          rdcnn_enum_t m = static_cast<rdcnn_enum_t>(i);
          name_t n = static_cast<name_t>(j);
               
          if ( !(m == TARGET && n == INPUT) )
            {
              m_refGlade->get_widget_derived(
                                             glade_widget_names[m][n],
                                             m_imgcol.image(m,n)
                                             );
              m_imgcol.image(m,n)->load(EMPTY_IMAGE.c_str());
              m_imgcol.pixmap(m,n) =
                Gdk::Pixmap::create(m_imgcol.image(m,n)->get_window(),
                                    m_dim.get_width(),
                                    m_dim.get_height(),
                                    m_imgcol.image(m,n)->get_window()
                                    ->get_depth());
               
                //m_colormap = this->get_default_colormap();
               
              m_imgcol.pixbuf(m,n)
                = m_imgcol.image(m,n)->get_pixbuf();
             }
}


The problem is, that now Gdk::Pixmap::create causes the segfault. I
know, that this is a very bad solution, because I use the complete
(derived) Gtk:Image as Drawable, although I only want to modify its
Pixbuf, but that was just a try whether it works or not.

Greetings,
Falk



Falk Schilling schrieb:

> Hallo Daniel,
>
> thanks for your reply.
>
> Daniel Elstner schrieb:
>>> m_drawable = Gdk::Drawable::create();
>> That looks odd.  If that create() method does indeed exist, I have no
>> idea what it would possibly do.  Gdk::Drawable is an abstract base
>> class. :-)
>
> Well, that explains a few things, e.g. some missing constructor methods
> for Gdk::Drawable (compared with other classes). Since this class method
> returns a Glib::RefPtr<Gdk::Drawable> I assumed that this is the way of
> creating objects. The documentation unfortunately lacks some information
> at this point, what this is used for.
>
>>> Maybe I have somewhere overlooked something in the documentation, but I
>>> assume that this is the right way to instantiate an Gdk::Drawable object.
>> I'm surprised that it is possible at all.  You want to instantiate a
>> Gdk::Pixmap, Gdk::Bitmap or Gdk::Window object, I think.
>>
>> Also, are you sure Gdk::Image is really what you want to use?  This
>> stuff all maps directly to X11 primitives...
>
> Well, I don’t want to use Cairo for just drawing simple pixels. I indeed
> don’t need stuff like arcs, lines or whatever else; I want to read
> pixels out of an image, process the values and write the result into
> another image. Purely and simple pixel operations.
>
> Ok, you suggest to take Gdk::Pixmap for this stuff. Well, how do I
> convert the Gdk::Pixbuf into a Gdk::Pixmap?
>
> Greetings,
> Falk Schilling
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list@...
> http://mail.gnome.org/mailman/listinfo/gtkmm-list

_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

 « Return to Thread: Crash when calling Gdk::Drawable::draw_pixbuf