Change context lost from callback to observer.
We want to have multiple LayerTreeFrameSinks share a ContextProvider.
The current ContextProvider implementation holds a single callback from
the LayerTreeFrameSink which won't work.
Add ContextLostObserver to observer ContextProvider. Update all
ContextProvider implementations to use the observer.
Bug: 770833
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I646468e3708c3953acb16d94ae798bef7646bef8
Reviewed-on: https://chromium-review.googlesource.com/736259
Commit-Queue: kylechar <[email protected]>
Reviewed-by: Antoine Labour <[email protected]>
Reviewed-by: Richard Coles <[email protected]>
Cr-Commit-Position: refs/heads/master@{#511598}
diff --git a/content/renderer/webgraphicscontext3d_provider_impl.h b/content/renderer/webgraphicscontext3d_provider_impl.h
index 3ac2e43..fcda050f 100644
--- a/content/renderer/webgraphicscontext3d_provider_impl.h
+++ b/content/renderer/webgraphicscontext3d_provider_impl.h
@@ -7,6 +7,7 @@
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
+#include "components/viz/common/gpu/context_provider.h"
#include "content/common/content_export.h"
#include "third_party/WebKit/public/platform/WebGraphicsContext3DProvider.h"
@@ -23,9 +24,10 @@
namespace content {
class CONTENT_EXPORT WebGraphicsContext3DProviderImpl
- : public blink::WebGraphicsContext3DProvider {
+ : public blink::WebGraphicsContext3DProvider,
+ public viz::ContextLostObserver {
public:
- explicit WebGraphicsContext3DProviderImpl(
+ WebGraphicsContext3DProviderImpl(
scoped_refptr<ui::ContextProviderCommandBuffer> provider,
bool software_rendering);
~WebGraphicsContext3DProviderImpl() override;
@@ -47,8 +49,14 @@
}
private:
+ // viz::ContextLostObserver implementation.
+ void OnContextLost() override;
+
scoped_refptr<ui::ContextProviderCommandBuffer> provider_;
const bool software_rendering_;
+ base::Closure context_lost_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(WebGraphicsContext3DProviderImpl);
};
} // namespace content