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

Unified Diff: ui/ozone/platform/drm/host/drm_display_host_manager_core.h

Issue 1661783002: Centralize all gbm ozone host IPC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 11 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: ui/ozone/platform/drm/host/drm_display_host_manager_core.h
diff --git a/ui/ozone/platform/drm/host/drm_display_host_manager_core.h b/ui/ozone/platform/drm/host/drm_display_host_manager_core.h
deleted file mode 100644
index c9f9f316665c43ffc779364ed7c0e723d35f653e..0000000000000000000000000000000000000000
--- a/ui/ozone/platform/drm/host/drm_display_host_manager_core.h
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_OZONE_PLATFORM_DRM_HOST_DRM_DISPLAY_HOST_MANAGER_CORE_H_
-#define UI_OZONE_PLATFORM_DRM_HOST_DRM_DISPLAY_HOST_MANAGER_CORE_H_
-
-#include <stdint.h>
-
-#include <map>
-#include <queue>
-
-#include "base/file_descriptor_posix.h"
-#include "base/files/scoped_file.h"
-#include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
-#include "base/memory/weak_ptr.h"
-#include "ui/display/types/native_display_delegate.h"
-#include "ui/events/ozone/device/device_event.h"
-#include "ui/events/ozone/device/device_event_observer.h"
-#include "ui/events/ozone/evdev/event_factory_evdev.h"
-#include "ui/ozone/public/gpu_platform_support_host.h"
-
-namespace ui {
-
-class DeviceManager;
-class DrmDeviceHandle;
-class DrmDisplayHost;
-class DrmDisplayHostManagerCore;
-class DrmGpuPlatformSupportHost;
-class DrmNativeDisplayDelegate;
-
-struct DisplaySnapshot_Params;
-
-// The concrete implementation of DrmDisplayHostManagerCoreProxy contains all
-// the
-// necessary code for the DrmDisplayHostManagerCoreCore to communicate with
-// the GPU child thread whether by IPC or thead-hop.
-class DrmDisplayHostManagerProxy {
- public:
- virtual ~DrmDisplayHostManagerProxy();
- virtual void RegisterHandler() = 0;
- virtual DrmGpuPlatformSupportHost* GetGpuPlatformSupportHost() = 0;
- virtual bool TakeDisplayControl() = 0;
- virtual bool RefreshNativeDisplays() = 0;
- virtual bool RelinquishDisplayControl() = 0;
- virtual bool AddGraphicsDevice(const base::FilePath& path,
- base::FileDescriptor fd) = 0;
- virtual bool RemoveGraphicsDevice(const base::FilePath& path) = 0;
-};
-
-// The portion of the DrmDisplayHostManagerCore implementation that is agnostic
-// in how its communication with GPU-specific functionality is implemented.
-// This is used from both the IPC and the in-process versions in MUS.
-class DrmDisplayHostManagerCore : public DeviceEventObserver {
- public:
- DrmDisplayHostManagerCore(DrmDisplayHostManagerProxy* proxy,
- DeviceManager* device_manager,
- InputControllerEvdev* input_controller);
- ~DrmDisplayHostManagerCore() override;
-
- DrmDisplayHost* GetDisplay(int64_t display_id);
-
- // External API.
- void AddDelegate(DrmNativeDisplayDelegate* delegate);
- void RemoveDelegate(DrmNativeDisplayDelegate* delegate);
- void TakeDisplayControl(const DisplayControlCallback& callback);
- void RelinquishDisplayControl(const DisplayControlCallback& callback);
- void UpdateDisplays(const GetDisplaysCallback& callback);
-
- // DeviceEventObserver overrides:
- void OnDeviceEvent(const DeviceEvent& event) override;
-
- // Communication-free implementations of actions performed in response to
- // messages from the GPU thread.
- void GpuThreadStarted();
- void GpuHasUpdatedNativeDisplays(
- const std::vector<DisplaySnapshot_Params>& displays);
- void GpuConfiguredDisplay(int64_t display_id, bool status);
- void GpuReceivedHDCPState(int64_t display_id, bool status, HDCPState state);
- void GpuUpdatedHDCPState(int64_t display_id, bool status);
- void GpuTookDisplayControl(bool status);
- void GpuRelinquishedDisplayControl(bool status);
-
- private:
- struct DisplayEvent {
- DisplayEvent(DeviceEvent::ActionType action_type,
- const base::FilePath& path)
- : action_type(action_type), path(path) {}
-
- DeviceEvent::ActionType action_type;
- base::FilePath path;
- };
-
- // Handle hotplug events sequentially.
- void ProcessEvent();
-
- // Called as a result of finishing to process the display hotplug event. These
- // are responsible for dequing the event and scheduling the next event.
- void OnAddGraphicsDevice(const base::FilePath& path,
- const base::FilePath& sysfs_path,
- scoped_ptr<DrmDeviceHandle> handle);
- void OnUpdateGraphicsDevice();
- void OnRemoveGraphicsDevice(const base::FilePath& path);
-
- void RunUpdateDisplaysCallback(const GetDisplaysCallback& callback) const;
-
- void NotifyDisplayDelegate() const;
-
- DrmDisplayHostManagerProxy* proxy_; // Not owned.
- DeviceManager* device_manager_; // Not owned.
- InputControllerEvdev* input_controller_; // Not owned.
-
- DrmNativeDisplayDelegate* delegate_ = nullptr; // Not owned.
-
- // File path for the primary graphics card which is opened by default in the
- // GPU process. We'll avoid opening this in hotplug events since it will race
- // with the GPU process trying to open it and aquire DRM master.
- base::FilePath primary_graphics_card_path_;
-
- // File path for virtual gem (VGEM) device.
- base::FilePath vgem_card_path_;
-
- // Keeps track if there is a dummy display. This happens on initialization
- // when there is no connection to the GPU to update the displays.
- bool has_dummy_display_ = false;
-
- std::vector<scoped_ptr<DrmDisplayHost>> displays_;
-
- GetDisplaysCallback get_displays_callback_;
-
- bool display_externally_controlled_ = false;
- bool display_control_change_pending_ = false;
- DisplayControlCallback take_display_control_callback_;
- DisplayControlCallback relinquish_display_control_callback_;
-
- // Used to serialize display event processing. This is done since
- // opening/closing DRM devices cannot be done on the UI thread and are handled
- // on a worker thread. Thus, we need to queue events in order to process them
- // in the correct order.
- std::queue<DisplayEvent> event_queue_;
-
- // True if a display event is currently being processed on a worker thread.
- bool task_pending_ = false;
-
- // Keeps track of all the active DRM devices. The key is the device path, the
- // value is the sysfs path which has been resolved from the device path.
- std::map<base::FilePath, base::FilePath> drm_devices_;
-
- // This is used to cache the primary DRM device until the channel is
- // established.
- scoped_ptr<DrmDeviceHandle> primary_drm_device_handle_;
-
- base::WeakPtrFactory<DrmDisplayHostManagerCore> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(DrmDisplayHostManagerCore);
-};
-
-} // namespace ui
-
-#endif // UI_OZONE_PLATFORM_DRM_HOST_DRM_DISPLAY_HOST_MANAGER_CORE_H_
« no previous file with comments | « ui/ozone/platform/drm/host/drm_display_host_manager.cc ('k') | ui/ozone/platform/drm/host/drm_display_host_manager_core.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698