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

Bug#329231: Qt change brings to light bug in kst



reassign 329231 kst
found 329231 1.1.0-2.1
thanks

Mark,

I just spent some time investigating this bug, and here is what I found:

The two line change you propose to revert in qt is the only change in 
qpixmap.cpp or qpixmap_x11.cpp from qt 3.3.4 to 3.3.5.  In the changes 
file <http://www.trolltech.com/developer/changes/changes-3.3.5.html> I 
read this:

- QPixmap
        Fixed a crash when loading a cursor from an embedded image.
        The color depth is now set properly when converting a QBitmap.

Even though this is in the "Mac" section of the changes file, this makes me 
reluctant to revert the change.

When I look at the qt 3.3 API docs for QPixmap constructors 
<http://doc.trolltech.com/3.3/qpixmap.html#QPixmap-3>, I read:

The depth can be either 1 (monochrome) or the depth of the current video 
mode. If depth is negative, then the hardware depth of the current video 
mode will be used.

Finally, I ran kst under gdb with qt-x11-free-dbg installed and set a 
breakpoint at QPixmap::init just before creating a plot.  After lots of 
continues with valid parameters (w or h is 0 and depth is 0, or depth is 
-1 or 24 on my display), I got one with depth set to 8.  This doesn't 
cause a problem here because w = h = 0, so a null pixmap of depth 8 is 
created.  When it is resized, however, it causes a problem.  With the old 
qt behavior, an invalid depth was ignored when creating a null pixmap.

So, the bug is in lines 84, 124, 389 of kst/kst/kst2dplot.cpp where it 
specifies a depth of 8 when creating the KstBackBuffer.  It should 
probably use the default of -1 and let qt create a QPixmap of the 
appropriate bit depth.

Josh



Reply to: