diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-11-01 20:16:11 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-11-01 20:16:11 +0100 |
commit | e0de8181d9d51cff079f9b54fd6fa276d6aeb094 (patch) | |
tree | 260dea667bc815c9e80543faf6c50a1bf85f4916 /widget | |
parent | 24a83a813641a6500e91f9fcf1ea3ca0aecc047a (diff) | |
download | UXP-e0de8181d9d51cff079f9b54fd6fa276d6aeb094.tar UXP-e0de8181d9d51cff079f9b54fd6fa276d6aeb094.tar.gz UXP-e0de8181d9d51cff079f9b54fd6fa276d6aeb094.tar.lz UXP-e0de8181d9d51cff079f9b54fd6fa276d6aeb094.tar.xz UXP-e0de8181d9d51cff079f9b54fd6fa276d6aeb094.zip |
Protect main thread in-process access to WinCompositorWidget transparent surface.
Diffstat (limited to 'widget')
-rw-r--r-- | widget/windows/InProcessWinCompositorWidget.cpp | 25 | ||||
-rw-r--r-- | widget/windows/InProcessWinCompositorWidget.h | 4 |
2 files changed, 29 insertions, 0 deletions
diff --git a/widget/windows/InProcessWinCompositorWidget.cpp b/widget/windows/InProcessWinCompositorWidget.cpp index 685eaf5ca..a11790b32 100644 --- a/widget/windows/InProcessWinCompositorWidget.cpp +++ b/widget/windows/InProcessWinCompositorWidget.cpp @@ -23,6 +23,31 @@ InProcessWinCompositorWidget::InProcessWinCompositorWidget(const CompositorWidge MOZ_ASSERT(mWindow); } +void +InProcessWinCompositorWidget::OnDestroyWindow() +{ + EnterPresentLock(); + WinCompositorWidget::OnDestroyWindow(); + LeavePresentLock(); +} + +void +InProcessWinCompositorWidget::UpdateTransparency(nsTransparencyMode aMode) +{ + EnterPresentLock(); + WinCompositorWidget::UpdateTransparency(aMode); + LeavePresentLock(); +} + +void +InProcessWinCompositorWidget::ClearTransparentWindow() +{ + EnterPresentLock(); + WinCompositorWidget::ClearTransparentWindow(); + LeavePresentLock(); +} + + nsIWidget* InProcessWinCompositorWidget::RealWidget() { diff --git a/widget/windows/InProcessWinCompositorWidget.h b/widget/windows/InProcessWinCompositorWidget.h index 2ce6ba0be..afe5a7f53 100644 --- a/widget/windows/InProcessWinCompositorWidget.h +++ b/widget/windows/InProcessWinCompositorWidget.h @@ -22,6 +22,10 @@ class InProcessWinCompositorWidget final : public WinCompositorWidget public: InProcessWinCompositorWidget(const CompositorWidgetInitData& aInitData, nsWindow* aWindow); + void OnDestroyWindow() override; + void UpdateTransparency(nsTransparencyMode aMode) override; + void ClearTransparentWindow() override; + void ObserveVsync(VsyncObserver* aObserver) override; nsIWidget* RealWidget() override; |