We previously refactor canvas shutdown to account for the fact that they needed to be shutdown in conjunction with the DOM worker reference kept alive by the CanvasManagerChild. Unfortunately if the compositor process crashes, or otherwise the CanvasManagerChild actor is torn down, we also prematurely shutdown the canvas when it would previously fallback to Skia in the content process. This patch abstracts out canvas shutdown into the CanvasShutdownManager which has the owning reference to the ThreadSafeWorkerRef. It corrects a similar bug on the main thread as well for HTMLCanvasElement. Differential Revision: https://phabricator.services.mozilla.com/D204988
95 lines
2.1 KiB
Python
95 lines
2.1 KiB
Python
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
with Files("**"):
|
|
BUG_COMPONENT = ("Core", "Graphics")
|
|
|
|
EXPORTS.mozilla += ["D3DMessageUtils.h", "GfxMessageUtils.h"]
|
|
|
|
EXPORTS.mozilla.gfx += [
|
|
"CanvasManagerChild.h",
|
|
"CanvasManagerParent.h",
|
|
"CanvasRenderThread.h",
|
|
"CanvasShutdownManager.h",
|
|
"CrossProcessPaint.h",
|
|
"FileHandleWrapper.h",
|
|
"GPUChild.h",
|
|
"GPUParent.h",
|
|
"GPUProcessHost.h",
|
|
"GPUProcessImpl.h",
|
|
"GPUProcessListener.h",
|
|
"GPUProcessManager.h",
|
|
"VsyncBridgeChild.h",
|
|
"VsyncBridgeParent.h",
|
|
"VsyncIOThreadHolder.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.layers += [
|
|
"CompositorOptions.h",
|
|
"CompositorSession.h",
|
|
"InProcessCompositorSession.h",
|
|
"OverlayInfo.h",
|
|
"RemoteCompositorSession.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.widget += [
|
|
"CompositorWidgetVsyncObserver.h",
|
|
]
|
|
|
|
UNIFIED_SOURCES += [
|
|
"CanvasManagerChild.cpp",
|
|
"CanvasManagerParent.cpp",
|
|
"CanvasRenderThread.cpp",
|
|
"CanvasShutdownManager.cpp",
|
|
"CompositorSession.cpp",
|
|
"CompositorWidgetVsyncObserver.cpp",
|
|
"CrossProcessPaint.cpp",
|
|
"D3DMessageUtils.cpp",
|
|
"FileHandleWrapper.cpp",
|
|
"GPUChild.cpp",
|
|
"GPUProcessHost.cpp",
|
|
"GPUProcessImpl.cpp",
|
|
"GPUProcessManager.cpp",
|
|
"InProcessCompositorSession.cpp",
|
|
"RemoteCompositorSession.cpp",
|
|
"VsyncBridgeChild.cpp",
|
|
"VsyncBridgeParent.cpp",
|
|
"VsyncIOThreadHolder.cpp",
|
|
]
|
|
|
|
SOURCES += [
|
|
"GPUParent.cpp",
|
|
]
|
|
|
|
IPDL_SOURCES = [
|
|
"GraphicsMessages.ipdlh",
|
|
"PCanvasManager.ipdl",
|
|
"PVsyncBridge.ipdl",
|
|
]
|
|
|
|
PREPROCESSED_IPDL_SOURCES += [
|
|
"PGPU.ipdl",
|
|
]
|
|
|
|
LOCAL_INCLUDES += [
|
|
"/dom/ipc",
|
|
"/gfx/cairo/cairo/src",
|
|
"/ipc/glue",
|
|
"/toolkit/crashreporter",
|
|
"/xpcom/threads",
|
|
]
|
|
|
|
include("/ipc/chromium/chromium-config.mozbuild")
|
|
|
|
FINAL_LIBRARY = "xul"
|
|
|
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
|
|
|
CXXFLAGS += ["-Werror=switch"]
|
|
|
|
LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"]
|