void QS60WindowSurface::flush(QWidget *widget, const QRegion ®ion, const QPoint &) { const QVector<QRect> subRects = region.rects(); for (int i = 0; i < subRects.count(); ++i) { TRect tr = qt_QRect2TRect(subRects[i]); widget->winId()->DrawNow(tr); } }
void QS60WindowSurface::flush(QWidget *widget, const QRegion ®ion, const QPoint &) { QWidget *window = widget->window(); Q_ASSERT(window); QTLWExtra *topExtra = window->d_func()->maybeTopData(); Q_ASSERT(topExtra); QRect qr = region.boundingRect(); if (!topExtra->inExpose) { topExtra->inExpose = true; // Prevent DrawNow() from calling syncBackingStore() again TRect tr = qt_QRect2TRect(qr); widget->winId()->DrawNow(tr); topExtra->inExpose = false; } else { // This handles the case when syncBackingStore updates content outside of the // original drawing rectangle. This might happen if there are pending update() // events at the same time as we get a Draw() from Symbian. QRect drawRect = qt_TRect2QRect(widget->winId()->DrawableWindow()->GetDrawRect()); if (!drawRect.contains(qr)) widget->winId()->DrawDeferred(); } }