Index: ui/ozone/platform/dri/dri_gpu_platform_support.cc |
diff --git a/ui/ozone/platform/dri/dri_gpu_platform_support.cc b/ui/ozone/platform/dri/dri_gpu_platform_support.cc |
index fa0923f7aea1028911634600708aa384b44428ae..af7ed4dfb0527d35ca3ed3cbaed4159e4cf36221 100644 |
--- a/ui/ozone/platform/dri/dri_gpu_platform_support.cc |
+++ b/ui/ozone/platform/dri/dri_gpu_platform_support.cc |
@@ -13,7 +13,6 @@ |
#include "ui/ozone/common/display_util.h" |
#include "ui/ozone/common/gpu/ozone_gpu_message_params.h" |
#include "ui/ozone/common/gpu/ozone_gpu_messages.h" |
-#include "ui/ozone/platform/dri/dri_helper_thread.h" |
#include "ui/ozone/platform/dri/dri_window_delegate_impl.h" |
#include "ui/ozone/platform/dri/dri_window_delegate_manager.h" |
#include "ui/ozone/platform/dri/dri_wrapper.h" |
@@ -32,9 +31,13 @@ void MessageProcessedOnMain( |
class DriGpuPlatformSupportMessageFilter : public IPC::MessageFilter { |
public: |
+ typedef base::Callback<void( |
+ const scoped_refptr<base::SingleThreadTaskRunner>&)> |
+ OnFilterAddedCallback; |
+ |
DriGpuPlatformSupportMessageFilter( |
DriWindowDelegateManager* window_manager, |
- const base::Closure& on_filter_added_callback, |
+ const OnFilterAddedCallback& on_filter_added_callback, |
IPC::Listener* main_thread_listener) |
: window_manager_(window_manager), |
on_filter_added_callback_(on_filter_added_callback), |
@@ -45,7 +48,9 @@ class DriGpuPlatformSupportMessageFilter : public IPC::MessageFilter { |
void OnFilterAdded(IPC::Sender* sender) override { |
io_thread_task_runner_ = base::ThreadTaskRunnerHandle::Get(); |
- main_thread_task_runner_->PostTask(FROM_HERE, on_filter_added_callback_); |
+ main_thread_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(on_filter_added_callback_, io_thread_task_runner_)); |
} |
// This code is meant to be very temporary and only as a special case to fix |
@@ -154,7 +159,7 @@ class DriGpuPlatformSupportMessageFilter : public IPC::MessageFilter { |
} |
DriWindowDelegateManager* window_manager_; |
- base::Closure on_filter_added_callback_; |
+ OnFilterAddedCallback on_filter_added_callback_; |
IPC::Listener* main_thread_listener_; |
scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_; |
scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner_; |
@@ -174,8 +179,8 @@ DriGpuPlatformSupport::DriGpuPlatformSupport( |
screen_manager_(screen_manager), |
ndd_(ndd.Pass()) { |
filter_ = new DriGpuPlatformSupportMessageFilter( |
- window_manager, |
- base::Bind(&DriGpuPlatformSupport::OnFilterAdded, base::Unretained(this)), |
+ window_manager, base::Bind(&DriGpuPlatformSupport::SetIOTaskRunner, |
+ base::Unretained(this)), |
this); |
} |
@@ -352,14 +357,13 @@ void DriGpuPlatformSupport::RelinquishGpuResources( |
callback.Run(); |
} |
-void DriGpuPlatformSupport::OnFilterAdded() { |
+void DriGpuPlatformSupport::SetIOTaskRunner( |
+ const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) { |
+ io_task_runner_ = io_task_runner; |
base::CommandLine* cmd = base::CommandLine::ForCurrentProcess(); |
- // Only surfaceless path supports async page flips. So we only initialize the |
- // helper thread if we're using async page flips. |
- if (!helper_thread_.IsRunning() && |
- cmd->HasSwitch(switches::kOzoneUseSurfaceless)) { |
- helper_thread_.Initialize(); |
- drm_->InitializeTaskRunner(helper_thread_.task_runner()); |
+ // Only surfaceless path supports async page flips. |
+ if (cmd->HasSwitch(switches::kOzoneUseSurfaceless)) { |
+ drm_->InitializeTaskRunner(io_task_runner_); |
} |
} |