Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1565)

Unified Diff: services/native_viewport/main.cc

Issue 1309273005: native_viewport support for ozone (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: services/native_viewport/main.cc
diff --git a/services/native_viewport/main.cc b/services/native_viewport/main.cc
index 2e8dd7ad33bfc30382ad18eb736347e0c01efca1..fb5737a9a82aa8415492ccaa7c3a82fd63034620 100644
--- a/services/native_viewport/main.cc
+++ b/services/native_viewport/main.cc
@@ -4,6 +4,7 @@
#include <algorithm>
+#include "base/bind.h"
#include "base/command_line.h"
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
@@ -20,10 +21,24 @@
#include "ui/events/event_switches.h"
#include "ui/gl/gl_surface.h"
+#if defined(USE_OZONE)
+#include "mojo/services/ozone_drm_gpu/public/interfaces/ozone_drm_gpu.mojom.h" //nogncheck
+#include "mojo/services/ozone_drm_host/public/interfaces/ozone_drm_host.mojom.h" //nogncheck
+#include "services/native_viewport/ozone/display_manager.h" //nogncheck
+#include "services/native_viewport/ozone/ozone_drm_gpu_impl.h" //nogncheck
+#include "services/native_viewport/ozone/ozone_drm_host_impl.h" //nogncheck
+#include "ui/ozone/public/ozone_platform.h" //nogncheck
+#endif
+
using mojo::ApplicationConnection;
using mojo::Gpu;
using mojo::NativeViewport;
+#if defined(USE_OZONE)
+using mojo::OzoneDrmGpu;
+using mojo::OzoneDrmHost;
+#endif
+
namespace native_viewport {
class NativeViewportAppDelegate : public mojo::ApplicationDelegate,
@@ -33,10 +48,10 @@ class NativeViewportAppDelegate : public mojo::ApplicationDelegate,
NativeViewportAppDelegate() : is_headless_(false) {}
~NativeViewportAppDelegate() override {}
- private:
// mojo::ApplicationDelegate implementation.
void Initialize(mojo::ApplicationImpl* application) override {
application_ = application;
+
tracing_.Initialize(application);
// Apply the switch for kTouchEvents to CommandLine (if set). This allows
@@ -91,11 +106,64 @@ class NativeViewportAppDelegate : public mojo::ApplicationDelegate,
DISALLOW_COPY_AND_ASSIGN(NativeViewportAppDelegate);
};
-}
+
+#if defined(USE_OZONE)
jamesr 2015/08/25 00:30:28 can this stuff go somewhere other than main.cc? y
cdotstout 2015/08/27 19:10:21 Done.
+class NativeViewportOzoneDrmAppDelegate
+ : public NativeViewportAppDelegate,
+ public mojo::InterfaceFactory<OzoneDrmHost>,
+ public mojo::InterfaceFactory<OzoneDrmGpu> {
+ public:
+ using NativeViewportAppDelegate::Create;
+
+ void Initialize(mojo::ApplicationImpl* application) override {
+ NativeViewportAppDelegate::Initialize(application);
+ application->ConnectToService("mojo:native_viewport_service",
+ &ozone_drm_gpu_);
+ application->ConnectToService("mojo:native_viewport_service",
+ &ozone_drm_host_);
+ }
+
+ bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
+ if (!NativeViewportAppDelegate::ConfigureIncomingConnection(connection))
+ return false;
+ connection->AddService<OzoneDrmGpu>(this);
+ connection->AddService<OzoneDrmHost>(this);
+ return true;
+ }
+
+ // mojo::InterfaceFactory<OzoneDrmGpu> implementation.
+ void Create(ApplicationConnection* connection,
+ mojo::InterfaceRequest<OzoneDrmGpu> request) override {
+ new OzoneDrmGpuImpl(request.Pass(), ozone_drm_host_);
+ }
+
+ // mojo::InterfaceFactory<OzoneDrmHost> implementation.
+ void Create(ApplicationConnection* connection,
+ mojo::InterfaceRequest<OzoneDrmHost> request) override {
+ ui::OzonePlatform::InitializeForUI();
+ new OzoneDrmHostImpl(request.Pass(), ozone_drm_gpu_);
+
+ display_manager_.reset(new DisplayManager());
+ }
+
+ private:
+ std::unique_ptr<DisplayManager> display_manager_;
+ mojo::OzoneDrmHostPtr ozone_drm_host_;
+ mojo::OzoneDrmGpuPtr ozone_drm_gpu_;
+};
+
+#endif
+
+} // namespace
MojoResult MojoMain(MojoHandle application_request) {
+#if defined(USE_OZONE)
+ mojo::ApplicationRunnerChromium runner(
+ new native_viewport::NativeViewportOzoneDrmAppDelegate);
+#else
mojo::ApplicationRunnerChromium runner(
new native_viewport::NativeViewportAppDelegate);
+#endif
runner.set_message_loop_type(base::MessageLoop::TYPE_UI);
return runner.Run(application_request);
}

Powered by Google App Engine
This is Rietveld 408576698