More qt-peer issues

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

 



Here's a broken down report on other qt-peer design issues:

I compiled classpath from CVS with:


-------------------------------------------------------------------
$ MOC=/usr/bin/moc-qt4 \
ECJ=/usr/bin/ecj-gcj \
./configure \
        --prefix=`pwd`/dist \
        --enable-xmlj \
        --enable-dependency-tracking \
        --enable-maintainer-mode \
        --enable-qt-peer \
        --enable-gtk-cairo \
        --disable-libtool-lock \
        --disable-rpath \
        --enable-examples \
        --with-gnu-ld \
        --with-ecj \
        --with-gcj
-------------------------------------------------------------------

and jamvm 1.4.2 with:

-------------------------------------------------------------------
$ ./configure \
	--prefix=/usr/src/classpath/dist \
	--enable-ffi \
	--with-classpath-install-dir=/usr/src/classpath/dist \
	--disable-int-threading
-------------------------------------------------------------------

I tried that "--disable-int-threading" to circumvent the 
Qt-GUI-Classes-aren't-thread-safe problem I reported earlier, but somehow 
this didn't solve the problem. I get the same problem with and without this.


Ok, now I start the app ...

-------------------------------------------------------------------
$ dist/bin/jamvm \
  -Dawt.toolkit=gnu.java.awt.peer.qt.QtToolkit \
  -cp examples/examples.zip \
  gnu.classpath.examples.awt.Demo
-------------------------------------------------------------------

and get lot's of warning. Here's a run-down:


-------------------------------------------------------------------
QFont: It is not safe to use text and fonts outside the gui thread
-------------------------------------------------------------------

See my earlier mail, 
http://developer.classpath.org/pipermail/classpath/2006-February/000069.html



-------------------------------------------------------------------
QPainter::begin(), paintdevice returned engine == 0, type: 3
-------------------------------------------------------------------

That's from Qt's src/gui/painting/qpainter.cpp, the code here is

    d->device = pd;
    d->engine = pd->paintEngine();

    if (!d->engine) {
        qWarning("QPainter::begin(), paintdevice returned engine == 0, type: 
%d\n",
        pd->devType());
        return true;
    }

near the start of the QPainter::begin(QPaintDevice *pd) method. Trolltech says 
"The QPaintDevice class is the base class of objects that can be painted" and 
"QPainter can operate on any object that inherits the QPaintDevice class.".

That means that here someone called QPainter::begin with a paintdevice that 
didn' have a PaintEngine filled in. Bad, bad, bad.



-------------------------------------------------------------------
Painter must be active to set rendering hints
-------------------------------------------------------------------

Here someone called QPainter::setRenderHint() without a prior call to 
QPainter::begin(). This is bad, since you a) can only paint after calling
QPainter::begin() and Trolltech states as a description for this method: " 
Notice that all painter settings (setPen(), setBrush() etc.) are reset to 
default values when begin() is called.". So setting renderhints outside of a 
begin() and then later calling begin() wouldn't achive the desired effect.



-------------------------------------------------------------------
QPainter::setMatrix(), painter not active
-------------------------------------------------------------------

Dito.




I can also let the qt-peer rendered Example app crash by intent: I first start 
the app, then I click the "Random test" button, then the X-button of the 
window to close the window and then the the "RoundRect" button. And voula, a 
crash.


[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux