| 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,
|
|
|