$drawing_area->queue_draw(); make program crash on some systems



Dear Gtk-perlers,

In developing a drawing program in gtk2-perl, I've met a strange situation.

I have a Gtk2::DrawingArea inside a Gtk2::Viewport inside a
Gtk2::ScrolledWindow inside a Gtk2::HBox inside a Gtk2::Table inside a
Gtk2::Window. I would like the DrawingArea (that contains a Cairo Surface)
to be redrawn each time the user clicks on it.

Since the other elements in the table are not changing, I have tried calling

$My_Drawing_Area->queue_draw();

or

$My_Drawing_Area->queue_draw_area(0,0,1000,1000);

to make the expose sub redraw that part of the window. While this works fine
on one system I have (opensuse 13.1, i586), on another system (also opensuse
13.1, but x86_64), the program crashes with a "BadDrawable" X error:

The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
  (Details: serial 1718 error_code 9 request_code 62 minor_code 0)

I get the expected behaviour (i.e. no crash) on both system if I replace the
above command by

$My_Main_Window->queue_draw();

or by 

$My_Main_Window->queue_draw_area(0,0,1000,1000);

Am I having luck that the $My_Drawing_Area->queue_draw() works on one
system, or is there a bug somewhere?

Also I wonder about the sanity of calling 

$My_Main_Window->queue_draw_area(0,0,1000,1000);

In, say, a 500x500 window (even if it contains a 2000x2000 drawing area as
described above).

Any idea?

Regards,

Guillaume





--
View this message in context: 
http://gtk.10911.n7.nabble.com/drawing-area-queue-draw-make-program-crash-on-some-systems-tp86333.html
Sent from the Gtk+ - Perl mailing list archive at Nabble.com.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]