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

Unified Diff: components/exo/wayland/clients/client_base.cc

Issue 2846203002: exo: no-roundtrip dmabuf import (Closed)
Patch Set: Created 3 years, 8 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: components/exo/wayland/clients/client_base.cc
diff --git a/components/exo/wayland/clients/client_base.cc b/components/exo/wayland/clients/client_base.cc
index 8c17ba56ed51b15fbaa3d47db39a00aed4b0b794..209d0c9a597a835376e06717b5fe930eadcdcf75 100644
--- a/components/exo/wayland/clients/client_base.cc
+++ b/components/exo/wayland/clients/client_base.cc
@@ -57,6 +57,9 @@ const char kUseDrm[] = "use-drm";
// Specifies if client should be fullscreen.
const char kFullscreen[] = "fullscreen";
+// Specifies if no-roundtrip dmabuf import path should be used.
+const char kNoRoundtripImport[] = "no-roundtrip-import";
reveman 2017/04/28 17:21:24 No need for this flag. Please refactor the code so
+
} // namespace switches
namespace {
@@ -174,6 +177,7 @@ bool ClientBase::InitParams::FromCommandLine(
fullscreen = command_line.HasSwitch(switches::kFullscreen);
transparent_background =
command_line.HasSwitch(switches::kTransparentBackground);
+ immed = command_line.HasSwitch(switches::kNoRoundtripImport);
return true;
}
@@ -200,6 +204,7 @@ bool ClientBase::Init(const InitParams& params) {
scale_ = params.scale;
fullscreen_ = params.fullscreen;
transparent_background_ = params.transparent_background;
+ immed_ = params.immed;
display_.reset(wl_display_connect(nullptr));
if (!display_) {
@@ -313,7 +318,8 @@ bool ClientBase::Init(const InitParams& params) {
buffers_.push_back(std::move(buffer));
}
- wl_display_roundtrip(display_.get());
+ if (!immed_)
+ wl_display_roundtrip(display_.get());
for (size_t i = 0; i < buffers_.size(); ++i) {
if (!buffers_[i]->buffer) {
LOG(ERROR) << "LinuxBufferParamsCreated was not called on the buffer.";
@@ -397,8 +403,12 @@ std::unique_ptr<ClientBase::Buffer> ClientBase::CreateBuffer(
zwp_linux_buffer_params_v1_add(buffer->params.get(), fd.get(), i, offset,
stride, 0, 0);
}
- zwp_linux_buffer_params_v1_create(buffer->params.get(), width_, height_,
- drm_format, 0);
+ if (immed_)
+ buffer->buffer.reset(zwp_linux_buffer_params_v1_create_immed(
+ buffer->params.get(), width_, height_, drm_format, 0));
+ else
+ zwp_linux_buffer_params_v1_create(buffer->params.get(), width_, height_,
+ drm_format, 0);
if (gbm_bo_get_num_planes(buffer->bo.get()) != 1)
return buffer;

Powered by Google App Engine
This is Rietveld 408576698