diff options
author | Morten Johan Sørvig <morten.sorvig@nokia.com> | 2010-01-18 08:14:12 (GMT) |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@nokia.com> | 2010-02-04 09:11:03 (GMT) |
commit | 04e34fe3aecca482abeeabe2e31778e9102eeb08 (patch) | |
tree | 89a10ac1baa65306c26c61886397912755e00af3 /src/gui/kernel/qwidget_mac.mm | |
parent | 3e6b22f138ad5b592dedbca99f91fdf612f20cea (diff) | |
download | Qt-04e34fe3aecca482abeeabe2e31778e9102eeb08.zip Qt-04e34fe3aecca482abeeabe2e31778e9102eeb08.tar.gz Qt-04e34fe3aecca482abeeabe2e31778e9102eeb08.tar.bz2 |
Improve raster graphics system performance on Mac (second try).
This fixes the qmlviewer "sluggish animations and lost
mouse events" issue by making sure we don't block and
wait for for the screen refresh when flushing the
backing store to the screen.
NB: This commit fixes build issues found in f5f62c0bed.
Review: msorvig
Details:
- Don't force repaints, flush the backingstore in response
to a Cocoa paint/display events only.
- Flush once per window.
- Get the CGContext from the window (don't create a new one)
- Don't call CGContextiFlush on the context.
Diffstat (limited to 'src/gui/kernel/qwidget_mac.mm')
-rw-r--r-- | src/gui/kernel/qwidget_mac.mm | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 78c1562..b5888b4 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -565,6 +565,25 @@ inline static void qt_mac_set_window_group_to_popup(OSWindowRef window) } #endif +#ifdef QT_MAC_USE_COCOA +void qt_mac_set_needs_display(QWidget *widget, QRegion region) +{ + NSView *theNSView = qt_mac_nativeview_for(widget); + if (region.isNull()) { + [theNSView setNeedsDisplay:YES]; + return; + } + + QVector<QRect> rects = region.rects(); + for (int i = 0; i<rects.count(); ++i) { + const QRect &rect = rects.at(i); + NSRect nsrect = NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height()); + [theNSView setNeedsDisplayInRect:nsrect]; + } + +} +#endif + inline static bool updateRedirectedToGraphicsProxyWidget(QWidget *widget, const QRect &rect) { if (!widget) |