зеркало из https://github.com/mozilla/gecko-dev.git
Allow creating WinCompositorWidgetProxy without an nsWindow. (bug 1281998 part 1, r=jimm)
This commit is contained in:
Родитель
4b3a0f0d42
Коммит
b36fb329b1
|
@ -13,17 +13,18 @@ namespace widget {
|
|||
|
||||
using namespace mozilla::gfx;
|
||||
|
||||
WinCompositorWidgetProxy::WinCompositorWidgetProxy(nsWindow* aWindow)
|
||||
WinCompositorWidgetProxy::WinCompositorWidgetProxy(HWND aWnd,
|
||||
uintptr_t aWidgetKey,
|
||||
nsTransparencyMode aMode,
|
||||
nsWindow* aWindow)
|
||||
: mWindow(aWindow),
|
||||
mWidgetKey(reinterpret_cast<uintptr_t>(aWindow)),
|
||||
mWnd(reinterpret_cast<HWND>(aWindow->GetNativeData(NS_NATIVE_WINDOW))),
|
||||
mTransparencyMode(aWindow->GetTransparencyMode()),
|
||||
mWidgetKey(aWidgetKey),
|
||||
mWnd(aWnd),
|
||||
mTransparencyMode(aMode),
|
||||
mMemoryDC(nullptr),
|
||||
mCompositeDC(nullptr),
|
||||
mLockedBackBufferData(nullptr)
|
||||
{
|
||||
MOZ_ASSERT(aWindow);
|
||||
MOZ_ASSERT(!aWindow->Destroyed());
|
||||
MOZ_ASSERT(mWnd && ::IsWindow(mWnd));
|
||||
}
|
||||
|
||||
|
@ -54,6 +55,7 @@ WinCompositorWidgetProxy::PostRender(layers::LayerManagerComposite* aManager)
|
|||
nsIWidget*
|
||||
WinCompositorWidgetProxy::RealWidget()
|
||||
{
|
||||
MOZ_ASSERT(mWindow);
|
||||
return mWindow;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,10 @@ namespace widget {
|
|||
class WinCompositorWidgetProxy : public CompositorWidgetProxy
|
||||
{
|
||||
public:
|
||||
WinCompositorWidgetProxy(nsWindow* aWindow);
|
||||
WinCompositorWidgetProxy(HWND aWnd,
|
||||
uintptr_t aWidgetKey,
|
||||
nsTransparencyMode aMode,
|
||||
nsWindow* aWindow = nullptr);
|
||||
|
||||
bool PreRender(layers::LayerManagerComposite*) override;
|
||||
void PostRender(layers::LayerManagerComposite*) override;
|
||||
|
|
|
@ -3621,7 +3621,7 @@ nsWindow::GetLayerManager(PLayerTransactionChild* aShadowManager,
|
|||
// Ensure we have a widget proxy even if we're not using the compositor,
|
||||
// since that's where we handle transparent windows.
|
||||
if (!mCompositorWidgetProxy) {
|
||||
mCompositorWidgetProxy = new WinCompositorWidgetProxy(this);
|
||||
mCompositorWidgetProxy = NewCompositorWidgetProxy();
|
||||
}
|
||||
|
||||
mLayerManager = CreateBasicLayerManager();
|
||||
|
@ -3687,7 +3687,11 @@ nsWindow::OnDefaultButtonLoaded(const LayoutDeviceIntRect& aButtonRect)
|
|||
mozilla::widget::CompositorWidgetProxy*
|
||||
nsWindow::NewCompositorWidgetProxy()
|
||||
{
|
||||
return new WinCompositorWidgetProxy(this);
|
||||
return new WinCompositorWidgetProxy(
|
||||
mWnd,
|
||||
reinterpret_cast<uintptr_t>(this),
|
||||
mTransparencyMode,
|
||||
this);
|
||||
}
|
||||
|
||||
mozilla::widget::WinCompositorWidgetProxy*
|
||||
|
|
Загрузка…
Ссылка в новой задаче