- d->paintMutex.lock();
- d->imageMutex.lock();
- if (d->dirtyFlag) {
- QRect r = d->dirtyRect;
- d->dirtyFlag = false;
- d->imageMutex.unlock();
- repaint(r);
- } else
- d->imageMutex.unlock();
- d->paintCondition.wakeAll();
- d->paintMutex.unlock();
+ d->syncMutex.lock();
+ d->update();
+ qApp->sendPostedEvents(this, QEvent::UpdateLater);
+ qApp->sendPostedEvents(this, QEvent::UpdateRequest);
+ qApp->sendPostedEvents(this, QEvent::Paint);
+ if (0) { // Disabled because this can lead to
+ // dead-lock if a close event is
+ // processed !
+ qApp->processEvents(QEventLoop::ExcludeUserInputEvents |
+ QEventLoop::ExcludeSocketNotifiers |
+ QEventLoop::DeferredDeletion |
+ QEventLoop::X11ExcludeTimers);
+ }
+ qApp->flush();
+ qApp->syncX();
+ d->syncCondition.wakeAll();
+ d->syncMutex.unlock();