mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 546515: Part 2: Use D3D9 layers backend as the preferred hardware backend for Windows. r=roc
This commit is contained in:
parent
5c0ef5136a
commit
c2804730fc
@ -2813,6 +2813,12 @@ pref("mozilla.widget.render-mode", -1);
|
||||
// Initialize default accelerated layers
|
||||
pref("mozilla.widget.accelerated-layers", true);
|
||||
|
||||
#ifdef XP_WIN
|
||||
#ifndef WINCE
|
||||
pref("mozilla.layers.prefer-opengl", false);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable/Disable the geolocation API for content
|
||||
pref("geo.enabled", true);
|
||||
|
||||
|
@ -125,6 +125,7 @@
|
||||
#include "nsIDOMNSUIEvent.h"
|
||||
#include "nsITheme.h"
|
||||
#include "nsIPrefBranch.h"
|
||||
#include "nsIPrefBranch2.h"
|
||||
#include "nsIPrefService.h"
|
||||
#include "nsIObserverService.h"
|
||||
#include "nsIScreenManager.h"
|
||||
@ -167,6 +168,10 @@
|
||||
#include "nsWindowGfx.h"
|
||||
#include "gfxWindowsPlatform.h"
|
||||
#include "Layers.h"
|
||||
#ifndef WINCE
|
||||
#include "LayerManagerD3D9.h"
|
||||
#include "LayerManagerOGL.h"
|
||||
#endif
|
||||
|
||||
#if !defined(WINCE)
|
||||
#include "nsUXThemeConstants.h"
|
||||
@ -2917,6 +2922,41 @@ nsWindow::GetLayerManager()
|
||||
mLayerManager = NULL;
|
||||
mUseAcceleratedRendering = topWindow->GetAcceleratedRendering();
|
||||
}
|
||||
|
||||
#ifndef WINCE
|
||||
if (!mLayerManager) {
|
||||
if (mUseAcceleratedRendering) {
|
||||
nsCOMPtr<nsIPrefBranch2> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
|
||||
|
||||
PRBool allowAcceleration = PR_TRUE;
|
||||
PRBool preferOpenGL = PR_FALSE;
|
||||
if (prefs) {
|
||||
prefs->GetBoolPref("mozilla.widget.accelerated-layers",
|
||||
&allowAcceleration);
|
||||
prefs->GetBoolPref("mozilla.layers.prefer-opengl",
|
||||
&preferOpenGL);
|
||||
}
|
||||
|
||||
if (allowAcceleration) {
|
||||
if (preferOpenGL) {
|
||||
nsRefPtr<mozilla::layers::LayerManagerOGL> layerManager =
|
||||
new mozilla::layers::LayerManagerOGL(this);
|
||||
if (layerManager->Initialize()) {
|
||||
mLayerManager = layerManager;
|
||||
}
|
||||
}
|
||||
if (!mLayerManager) {
|
||||
nsRefPtr<mozilla::layers::LayerManagerD3D9> layerManager =
|
||||
new mozilla::layers::LayerManagerD3D9(this);
|
||||
if (layerManager->Initialize()) {
|
||||
mLayerManager = layerManager;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return nsBaseWidget::GetLayerManager();
|
||||
}
|
||||
|
||||
|
@ -71,6 +71,9 @@ using mozilla::plugins::PluginInstanceParent;
|
||||
#include "prmem.h"
|
||||
|
||||
#include "LayerManagerOGL.h"
|
||||
#ifndef WINCE
|
||||
#include "LayerManagerD3D9.h"
|
||||
#endif
|
||||
|
||||
#ifndef WINCE
|
||||
#include "nsUXThemeData.h"
|
||||
@ -677,6 +680,13 @@ DDRAW_FAILED:
|
||||
SetClippingRegion(event.region);
|
||||
result = DispatchWindowEvent(&event, eventStatus);
|
||||
break;
|
||||
#ifndef WINCE
|
||||
case LayerManager::LAYERS_D3D9:
|
||||
static_cast<mozilla::layers::LayerManagerD3D9*>(GetLayerManager())->
|
||||
SetClippingRegion(event.region);
|
||||
result = DispatchWindowEvent(&event, eventStatus);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
NS_ERROR("Unknown layers backend used!");
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user