diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-06-03 13:12:48 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-06 13:02:46 +0200 |
commit | f64d11fc6fd0798fae2a1ecc7565b9d2efd385bc (patch) | |
tree | 712048665265ec820f9f5712f6841f6805e12bf6 /Source/WebCore/plugins/PluginView.h | |
parent | 57626c5f3624b3b55d3b5a49118bca8a5baad8b3 (diff) | |
download | qtwebkit-f64d11fc6fd0798fae2a1ecc7565b9d2efd385bc.tar.gz |
[Qt][Mac] Allow drawing plugins with QWindow by always using an intermediate bitmap.
https://bugs.webkit.org/show_bug.cgi?id=116620
Reviewed by Tor Arne Vestbø.
The isolation of QWidget along with QPA in Qt5 is abstracting away the native CGContext
of a QWidget and we would need to create a non-public API to be able to achieve it.
Instead of adding complexity to this rarely touched code, always draw into an
intermediate bitmap that we then paint into our QPainter afterward.
- Use CGBitmapContextCreate to allocate a buffer directly instead of creating a QPixmap
and extract an CGContextRef out of it.
- Get rid of the "if (platformPluginWidget())" code path since we don't paint directly
into the QWidget's backing store anymore.
- Always use m_contextRef to draw the plugin instead of alternating between direct and
indirect drawing.
* plugins/PluginView.cpp:
(WebCore::PluginView::PluginView):
* plugins/PluginView.h:
* plugins/mac/PluginViewMac.mm:
(WebCore::createBitmapContext):
(WebCore::PluginView::platformStart):
(WebCore::PluginView::platformDestroy):
(WebCore::PluginView::setFocus):
(WebCore::PluginView::setNPWindowIfNeeded):
(WebCore::PluginView::updatePluginWidget):
(WebCore::PluginView::paint):
(WebCore::PluginView::invalidateRect):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151107 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Conflicts:
Source/WebCore/plugins/PluginView.h
Source/WebCore/plugins/mac/PluginViewMac.mm
Change-Id: I1006dcf3c08c14ca0d144532372de33f815fbc23
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebCore/plugins/PluginView.h')
-rw-r--r-- | Source/WebCore/plugins/PluginView.h | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/Source/WebCore/plugins/PluginView.h b/Source/WebCore/plugins/PluginView.h index 821c16161..361c286db 100644 --- a/Source/WebCore/plugins/PluginView.h +++ b/Source/WebCore/plugins/PluginView.h @@ -52,9 +52,6 @@ typedef struct HWND__* HWND; typedef HWND PlatformPluginWidget; #else typedef PlatformWidget PlatformPluginWidget; -#if defined(XP_MACOSX) && PLATFORM(QT) -#include <QPixmap> -#endif #endif #if PLATFORM(QT) #if USE(TEXTURE_MAPPER) @@ -330,7 +327,6 @@ namespace WebCore { int16_t dispatchNPCocoaEvent(NPCocoaEvent&); bool m_updatedCocoaTextInputRequested; bool m_keyDownSent; - bool m_usePixmap; uint16_t m_disregardKeyUpCounter; #endif @@ -390,7 +386,7 @@ namespace WebCore { bool m_haveUpdatedPluginWidget; #endif -#if ((PLATFORM(GTK) || PLATFORM(QT) || PLATFORM(WX)) && OS(WINDOWS)) || defined(XP_MACOSX) || PLATFORM(EFL) +#if ((PLATFORM(GTK) || PLATFORM(QT) || PLATFORM(WX)) && OS(WINDOWS)) || PLATFORM(EFL) // On Mac OSX and Qt/Windows the plugin does not have its own native widget, // but is using the containing window as its reference for positioning/painting. PlatformPluginWidget m_window; @@ -410,9 +406,6 @@ private: #elif defined(XP_MACOSX) NP_CGContext m_npCgContext; CGContextRef m_contextRef; -#if PLATFORM(QT) - QPixmap m_pixmap; -#endif void setNPWindowIfNeeded(); #endif |