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

Unified Diff: ui/gl/async_pixel_transfer_delegate_android.cc

Issue 12210129: gpu: Add the ability to wait on upload completion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added entry point for waiting. Rebased and added test. Created 7 years, 10 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/gl/async_pixel_transfer_delegate_android.cc
diff --git a/ui/gl/async_pixel_transfer_delegate_android.cc b/ui/gl/async_pixel_transfer_delegate_android.cc
index a594c9468e341848f22f4bd2c7a1c5326d2a7247..7e603ba4ebaaf8a96fd9fdded4c38c6b0fb82b7d 100644
--- a/ui/gl/async_pixel_transfer_delegate_android.cc
+++ b/ui/gl/async_pixel_transfer_delegate_android.cc
@@ -13,6 +13,7 @@
#include "base/memory/ref_counted.h"
#include "base/process_util.h"
#include "base/shared_memory.h"
+#include "base/synchronization/waitable_event.h"
#include "base/threading/thread.h"
#include "build/build_config.h"
#include "ui/gl/async_pixel_transfer_delegate.h"
@@ -198,6 +199,9 @@ SafeSharedMemoryPool* safe_shared_memory_pool() {
return g_transfer_thread.Pointer()->safe_shared_memory_pool();
}
+void SignalCompletion(base::WaitableEvent* completion) {
+ completion->Signal();
+}
} // namespace
@@ -380,6 +384,7 @@ class AsyncPixelTransferDelegateAndroid
virtual void AsyncNotifyCompletion(
const AsyncMemoryParams& mem_params,
const CompletionCallback& callback) OVERRIDE;
+ virtual void WaitOnUploadCompletion() OVERRIDE;
virtual void AsyncTexImage2D(
AsyncPixelTransferState* state,
const AsyncTexImage2DParams& tex_params,
@@ -504,6 +509,26 @@ void AsyncPixelTransferDelegateAndroid::AsyncNotifyCompletion(
callback));
}
+void AsyncPixelTransferDelegateAndroid::WaitOnUploadCompletion() {
+ // TODO(epenner): Move thread priorities to base. (crbug.com/170549)
+ int default_nice_value = 0; // Default priority.
+ int idle_nice_value = 10; // Idle priority.
+ setpriority(PRIO_PROCESS,
+ g_transfer_thread.Pointer()->thread_id(),
+ default_nice_value);
+
+ base::WaitableEvent completion(true, false);
+ transfer_message_loop_proxy()->PostTask(
+ FROM_HERE,
+ base::Bind(&SignalCompletion, &completion));
+ completion.Wait();
+
+ // TODO(epenner): Move thread priorities to base. (crbug.com/170549)
+ setpriority(PRIO_PROCESS,
+ g_transfer_thread.Pointer()->thread_id(),
+ idle_nice_value);
+}
+
void AsyncPixelTransferDelegateAndroid::AsyncTexImage2D(
AsyncPixelTransferState* transfer_state,
const AsyncTexImage2DParams& tex_params,

Powered by Google App Engine
This is Rietveld 408576698