Commit 24ba7c1e authored by Mark Yacoub's avatar Mark Yacoub Committed by Commit Bot

Ozone: Combine Enable/Disable display into 1 flow

Enabling and disabling displays share a lot of code that it's safe to
combine them.
The intention is to pass all displays bundled and go through the same
path to be configured together.

BUG=1082882
TEST=no changes enabling and disabling displays.

Change-Id: Ibfefa497fab863315bb36f58586ac23bb402a431
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2245173Reviewed-by: default avatarDaniel Nicoara <dnicoara@chromium.org>
Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Commit-Queue: Mark Yacoub <markyacoub@google.com>
Cr-Commit-Position: refs/heads/master@{#779418}
parent df4ebadf
...@@ -10,6 +10,6 @@ import "ui/gfx/geometry/mojom/geometry.mojom"; ...@@ -10,6 +10,6 @@ import "ui/gfx/geometry/mojom/geometry.mojom";
// Corresponds to display::DisplayConfigurationParams. // Corresponds to display::DisplayConfigurationParams.
struct DisplayConfigurationParams { struct DisplayConfigurationParams {
int64 id; int64 id;
display.mojom.DisplayMode mode;
gfx.mojom.Point origin; gfx.mojom.Point origin;
display.mojom.DisplayMode? mode;
}; };
...@@ -6,15 +6,6 @@ ...@@ -6,15 +6,6 @@
namespace mojo { namespace mojo {
// static
std::unique_ptr<display::DisplayMode>
StructTraits<display::mojom::DisplayConfigurationParamsDataView,
display::DisplayConfigurationParams>::
mode(const display::DisplayConfigurationParams& display_config_params) {
return (display_config_params.mode) ? display_config_params.mode->Clone()
: std::unique_ptr<display::DisplayMode>{};
}
// static // static
bool StructTraits<display::mojom::DisplayConfigurationParamsDataView, bool StructTraits<display::mojom::DisplayConfigurationParamsDataView,
display::DisplayConfigurationParams>:: display::DisplayConfigurationParams>::
...@@ -24,7 +15,7 @@ bool StructTraits<display::mojom::DisplayConfigurationParamsDataView, ...@@ -24,7 +15,7 @@ bool StructTraits<display::mojom::DisplayConfigurationParamsDataView,
if (!data.ReadOrigin(&origin)) if (!data.ReadOrigin(&origin))
return false; return false;
std::unique_ptr<display::DisplayMode> mode; base::Optional<std::unique_ptr<display::DisplayMode>> mode;
if (!data.ReadMode(&mode)) if (!data.ReadMode(&mode))
return false; return false;
......
...@@ -25,8 +25,10 @@ struct StructTraits<display::mojom::DisplayConfigurationParamsDataView, ...@@ -25,8 +25,10 @@ struct StructTraits<display::mojom::DisplayConfigurationParamsDataView,
return display_configuration_params.origin; return display_configuration_params.origin;
} }
static std::unique_ptr<display::DisplayMode> mode( static const base::Optional<std::unique_ptr<display::DisplayMode>>& mode(
const display::DisplayConfigurationParams& display_configuration_params); const display::DisplayConfigurationParams& display_configuration_params) {
return display_configuration_params.mode;
}
static bool Read(display::mojom::DisplayConfigurationParamsDataView data, static bool Read(display::mojom::DisplayConfigurationParamsDataView data,
display::DisplayConfigurationParams* out); display::DisplayConfigurationParams* out);
......
...@@ -7,12 +7,14 @@ ...@@ -7,12 +7,14 @@
namespace display { namespace display {
DisplayConfigurationParams::DisplayConfigurationParams() = default; DisplayConfigurationParams::DisplayConfigurationParams() = default;
DisplayConfigurationParams::DisplayConfigurationParams( DisplayConfigurationParams::DisplayConfigurationParams(
int64_t id, int64_t id,
gfx::Point origin, gfx::Point origin,
std::unique_ptr<display::DisplayMode> pmode) const display::DisplayMode* pmode)
: id(id), origin(origin), mode(std::move(pmode)) {} : id(id), origin(origin) {
if (pmode)
mode = pmode->Clone();
}
DisplayConfigurationParams::~DisplayConfigurationParams() = default; DisplayConfigurationParams::~DisplayConfigurationParams() = default;
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <stdint.h> #include <stdint.h>
#include "base/optional.h"
#include "ui/display/types/display_mode.h" #include "ui/display/types/display_mode.h"
#include "ui/display/types/display_types_export.h" #include "ui/display/types/display_types_export.h"
#include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/point.h"
...@@ -17,12 +18,12 @@ struct DISPLAY_TYPES_EXPORT DisplayConfigurationParams { ...@@ -17,12 +18,12 @@ struct DISPLAY_TYPES_EXPORT DisplayConfigurationParams {
DisplayConfigurationParams(); DisplayConfigurationParams();
DisplayConfigurationParams(int64_t id, DisplayConfigurationParams(int64_t id,
gfx::Point origin, gfx::Point origin,
std::unique_ptr<display::DisplayMode> pmode); const display::DisplayMode* pmode);
~DisplayConfigurationParams(); ~DisplayConfigurationParams();
int64_t id; int64_t id = 0;
gfx::Point origin; gfx::Point origin = gfx::Point();
std::unique_ptr<display::DisplayMode> mode; base::Optional<std::unique_ptr<display::DisplayMode>> mode = base::nullopt;
}; };
} // namespace display } // namespace display
......
...@@ -110,8 +110,8 @@ void DrmThread::Init() { ...@@ -110,8 +110,8 @@ void DrmThread::Init() {
device_manager_ = device_manager_ =
std::make_unique<DrmDeviceManager>(std::move(device_generator_)); std::make_unique<DrmDeviceManager>(std::move(device_generator_));
screen_manager_ = std::make_unique<ScreenManager>(); screen_manager_ = std::make_unique<ScreenManager>();
display_manager_.reset( display_manager_ = std::make_unique<DrmGpuDisplayManager>(
new DrmGpuDisplayManager(screen_manager_.get(), device_manager_.get())); screen_manager_.get(), device_manager_.get());
DCHECK(task_runner()) DCHECK(task_runner())
<< "DrmThread::Init -- thread doesn't have a task_runner"; << "DrmThread::Init -- thread doesn't have a task_runner";
...@@ -330,18 +330,17 @@ void DrmThread::ConfigureNativeDisplay( ...@@ -330,18 +330,17 @@ void DrmThread::ConfigureNativeDisplay(
base::OnceCallback<void(int64_t, bool)> callback) { base::OnceCallback<void(int64_t, bool)> callback) {
TRACE_EVENT0("drm", "DrmThread::ConfigureNativeDisplay"); TRACE_EVENT0("drm", "DrmThread::ConfigureNativeDisplay");
std::move(callback).Run( if (display_config_params.mode) {
display_config_params.id, std::move(callback).Run(
display_manager_->ConfigureDisplay(display_config_params.id, display_config_params.id,
*display_config_params.mode, display_manager_->ConfigureDisplay(display_config_params.id,
display_config_params.origin)); *display_config_params.mode.value(),
} display_config_params.origin));
} else {
void DrmThread::DisableNativeDisplay( std::move(callback).Run(
int64_t id, display_config_params.id,
base::OnceCallback<void(int64_t, bool)> callback) { display_manager_->DisableDisplay(display_config_params.id));
TRACE_EVENT0("drm", "DrmThread::DisableNativeDisplay"); }
std::move(callback).Run(id, display_manager_->DisableDisplay(id));
} }
void DrmThread::TakeDisplayControl(base::OnceCallback<void(bool)> callback) { void DrmThread::TakeDisplayControl(base::OnceCallback<void(bool)> callback) {
......
...@@ -147,9 +147,6 @@ class DrmThread : public base::Thread, ...@@ -147,9 +147,6 @@ class DrmThread : public base::Thread,
base::OnceCallback<void(MovableDisplaySnapshots)> callback) override; base::OnceCallback<void(MovableDisplaySnapshots)> callback) override;
void AddGraphicsDevice(const base::FilePath& path, base::File file) override; void AddGraphicsDevice(const base::FilePath& path, base::File file) override;
void RemoveGraphicsDevice(const base::FilePath& path) override; void RemoveGraphicsDevice(const base::FilePath& path) override;
void DisableNativeDisplay(
int64_t id,
base::OnceCallback<void(int64_t, bool)> callback) override;
void ConfigureNativeDisplay( void ConfigureNativeDisplay(
const display::DisplayConfigurationParams& display_config_params, const display::DisplayConfigurationParams& display_config_params,
base::OnceCallback<void(int64_t, bool)> callback) override; base::OnceCallback<void(int64_t, bool)> callback) override;
......
...@@ -46,15 +46,10 @@ void DrmDisplayHost::Configure(const display::DisplayMode* mode, ...@@ -46,15 +46,10 @@ void DrmDisplayHost::Configure(const display::DisplayMode* mode,
configure_callback_ = std::move(callback); configure_callback_ = std::move(callback);
bool status = false; bool status = false;
if (mode) {
auto config_mode = std::make_unique<display::DisplayMode>( display::DisplayConfigurationParams display_config_params(
mode->size(), mode->is_interlaced(), mode->refresh_rate()); snapshot_->display_id(), origin, mode);
display::DisplayConfigurationParams display_config_params( status = sender_->GpuConfigureNativeDisplay(display_config_params);
snapshot_->display_id(), origin, std::move(config_mode));
status = sender_->GpuConfigureNativeDisplay(display_config_params);
} else {
status = sender_->GpuDisableNativeDisplay(snapshot_->display_id());
}
if (!status) if (!status)
OnDisplayConfigured(false); OnDisplayConfigured(false);
......
...@@ -45,7 +45,6 @@ class GpuThreadAdapter { ...@@ -45,7 +45,6 @@ class GpuThreadAdapter {
// Services needed by DrmDisplayHost // Services needed by DrmDisplayHost
virtual bool GpuConfigureNativeDisplay( virtual bool GpuConfigureNativeDisplay(
const display::DisplayConfigurationParams& display_config_params) = 0; const display::DisplayConfigurationParams& display_config_params) = 0;
virtual bool GpuDisableNativeDisplay(int64_t display_id) = 0;
virtual bool GpuGetHDCPState(int64_t display_id) = 0; virtual bool GpuGetHDCPState(int64_t display_id) = 0;
virtual bool GpuSetHDCPState(int64_t display_id, virtual bool GpuSetHDCPState(int64_t display_id,
display::HDCPState state) = 0; display::HDCPState state) = 0;
......
...@@ -143,18 +143,6 @@ bool HostDrmDevice::GpuConfigureNativeDisplay( ...@@ -143,18 +143,6 @@ bool HostDrmDevice::GpuConfigureNativeDisplay(
return true; return true;
} }
bool HostDrmDevice::GpuDisableNativeDisplay(int64_t id) {
DCHECK_CALLED_ON_VALID_THREAD(on_ui_thread_);
if (!IsConnected())
return false;
auto callback =
base::BindOnce(&HostDrmDevice::GpuDisableNativeDisplayCallback, this);
drm_device_->DisableNativeDisplay(id, std::move(callback));
return true;
}
bool HostDrmDevice::GpuTakeDisplayControl() { bool HostDrmDevice::GpuTakeDisplayControl() {
DCHECK_CALLED_ON_VALID_THREAD(on_ui_thread_); DCHECK_CALLED_ON_VALID_THREAD(on_ui_thread_);
if (!IsConnected()) if (!IsConnected())
...@@ -275,12 +263,6 @@ void HostDrmDevice::GpuRefreshNativeDisplaysCallback( ...@@ -275,12 +263,6 @@ void HostDrmDevice::GpuRefreshNativeDisplaysCallback(
display_manager_->GpuHasUpdatedNativeDisplays(std::move(displays)); display_manager_->GpuHasUpdatedNativeDisplays(std::move(displays));
} }
void HostDrmDevice::GpuDisableNativeDisplayCallback(int64_t display_id,
bool success) const {
DCHECK_CALLED_ON_VALID_THREAD(on_ui_thread_);
display_manager_->GpuConfiguredDisplay(display_id, success);
}
void HostDrmDevice::GpuTakeDisplayControlCallback(bool success) const { void HostDrmDevice::GpuTakeDisplayControlCallback(bool success) const {
DCHECK_CALLED_ON_VALID_THREAD(on_ui_thread_); DCHECK_CALLED_ON_VALID_THREAD(on_ui_thread_);
display_manager_->GpuTookDisplayControl(success); display_manager_->GpuTookDisplayControl(success);
......
...@@ -67,7 +67,6 @@ class HostDrmDevice : public base::RefCountedThreadSafe<HostDrmDevice>, ...@@ -67,7 +67,6 @@ class HostDrmDevice : public base::RefCountedThreadSafe<HostDrmDevice>,
// Services needed by DrmDisplayHost // Services needed by DrmDisplayHost
bool GpuConfigureNativeDisplay(const display::DisplayConfigurationParams& bool GpuConfigureNativeDisplay(const display::DisplayConfigurationParams&
display_config_params) override; display_config_params) override;
bool GpuDisableNativeDisplay(int64_t display_id) override;
bool GpuGetHDCPState(int64_t display_id) override; bool GpuGetHDCPState(int64_t display_id) override;
bool GpuSetHDCPState(int64_t display_id, display::HDCPState state) override; bool GpuSetHDCPState(int64_t display_id, display::HDCPState state) override;
bool GpuSetColorMatrix(int64_t display_id, bool GpuSetColorMatrix(int64_t display_id,
...@@ -97,7 +96,6 @@ class HostDrmDevice : public base::RefCountedThreadSafe<HostDrmDevice>, ...@@ -97,7 +96,6 @@ class HostDrmDevice : public base::RefCountedThreadSafe<HostDrmDevice>,
bool success) const; bool success) const;
void GpuRefreshNativeDisplaysCallback(MovableDisplaySnapshots displays) const; void GpuRefreshNativeDisplaysCallback(MovableDisplaySnapshots displays) const;
void GpuDisableNativeDisplayCallback(int64_t display_id, bool success) const;
void GpuTakeDisplayControlCallback(bool success) const; void GpuTakeDisplayControlCallback(bool success) const;
void GpuRelinquishDisplayControlCallback(bool success) const; void GpuRelinquishDisplayControlCallback(bool success) const;
void GpuGetHDCPStateCallback(int64_t display_id, void GpuGetHDCPStateCallback(int64_t display_id,
......
...@@ -51,10 +51,7 @@ interface DrmDevice { ...@@ -51,10 +51,7 @@ interface DrmDevice {
// Instructs the GPU to abandon a DRM device. // Instructs the GPU to abandon a DRM device.
RemoveGraphicsDevice(mojo_base.mojom.FilePath path); RemoveGraphicsDevice(mojo_base.mojom.FilePath path);
// Instructs the GPU to disable a DRM device. // Configures (Enables/Disables) a DRM display, returning true on success.
DisableNativeDisplay(int64 display_id) => (int64 display_id, bool success);
// Configures a DRM display returning true on success.
ConfigureNativeDisplay( ConfigureNativeDisplay(
display.mojom.DisplayConfigurationParams display_config_params) => display.mojom.DisplayConfigurationParams display_config_params) =>
(int64 display_id, bool success); (int64 display_id, bool success);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment