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

Unified Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 2392623003: Revert of Android: Free GLHelper context ashmem when it makes sense (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « no previous file | content/common/gpu/client/context_provider_command_buffer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/render_widget_host_view_android.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 2412e18cc69ae41c91a283b12e02f3f8c6cd4c17..99dfbd0062dad04a101f86399cc2ce3ff30fdb94 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -8,7 +8,6 @@
#include <utility>
-#include "base/android/application_status_listener.h"
#include "base/android/build_info.h"
#include "base/android/context_utils.h"
#include "base/bind.h"
@@ -17,7 +16,6 @@
#include "base/location.h"
#include "base/logging.h"
#include "base/macros.h"
-#include "base/memory/memory_pressure_listener.h"
#include "base/metrics/histogram_macros.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/utf_string_conversions.h"
@@ -102,10 +100,6 @@
static const char kAsyncReadBackString[] = "Compositing.CopyFromSurfaceTime";
-using base::android::ApplicationState;
-using base::android::ApplicationStatusListener;
-using base::MemoryPressureListener;
-
class GLHelperHolder {
public:
static GLHelperHolder* Create();
@@ -117,36 +111,16 @@
return provider_->ContextGL()->GetGraphicsResetStatusKHR() != GL_NO_ERROR;
}
- void FreeUnusedSharedMemoryIfNeeded();
-
private:
- GLHelperHolder();
+ GLHelperHolder() = default;
void Initialize();
void OnContextLost();
- void OnApplicationStatusChanged(ApplicationState new_state);
- void OnMemoryPressure(MemoryPressureListener::MemoryPressureLevel level);
scoped_refptr<ContextProviderCommandBuffer> provider_;
std::unique_ptr<display_compositor::GLHelper> gl_helper_;
- // Set to |false| if there are only stopped activities (or none).
- bool has_running_or_paused_activities_;
- // Whether we recently were signaled a low memory condition.
- bool did_signal_memory_pressure_;
-
- std::unique_ptr<ApplicationStatusListener> app_status_listener_;
- std::unique_ptr<MemoryPressureListener> mem_pressure_listener_;
-
DISALLOW_COPY_AND_ASSIGN(GLHelperHolder);
};
-
-GLHelperHolder::GLHelperHolder()
- : has_running_or_paused_activities_(
- (ApplicationStatusListener::GetState() ==
- base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES) ||
- (ApplicationStatusListener::GetState() ==
- base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES)),
- did_signal_memory_pressure_(false) {}
GLHelperHolder* GLHelperHolder::Create() {
GLHelperHolder* holder = new GLHelperHolder;
@@ -210,60 +184,19 @@
base::Bind(&GLHelperHolder::OnContextLost, base::Unretained(this)));
gl_helper_.reset(new display_compositor::GLHelper(
provider_->ContextGL(), provider_->ContextSupport()));
-
- // Unretained() is safe because |this| owns the following two callbacks.
- app_status_listener_.reset(new ApplicationStatusListener(base::Bind(
- &GLHelperHolder::OnApplicationStatusChanged, base::Unretained(this))));
- mem_pressure_listener_.reset(new MemoryPressureListener(base::Bind(
- &GLHelperHolder::OnMemoryPressure, base::Unretained(this))));
-}
-
-void GLHelperHolder::FreeUnusedSharedMemoryIfNeeded() {
- if (!has_running_or_paused_activities_ || did_signal_memory_pressure_)
- provider_->FreeUnusedSharedMemory();
}
void GLHelperHolder::OnContextLost() {
- app_status_listener_.reset();
- mem_pressure_listener_.reset();
- gl_helper_.reset();
// Need to post a task because the command buffer client cannot be deleted
// from within this callback.
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::Bind(&RenderWidgetHostViewAndroid::OnContextLost));
}
-void GLHelperHolder::OnApplicationStatusChanged(ApplicationState new_state) {
- bool new_has_running_or_paused_activities =
- new_state == base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES ||
- new_state == base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES;
-
- if (!has_running_or_paused_activities_ &&
- new_has_running_or_paused_activities) {
- // Reset at this time since on Android there is no 'back to normal'
- // notification (but only onTrim/onLowMemory).
- did_signal_memory_pressure_ = false;
- } else if (!new_has_running_or_paused_activities) {
- provider_->FreeUnusedSharedMemory();
- }
-
- has_running_or_paused_activities_ = new_has_running_or_paused_activities;
-}
-
-void GLHelperHolder::OnMemoryPressure(
- MemoryPressureListener::MemoryPressureLevel level) {
- if (level == MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE ||
- level == MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
- did_signal_memory_pressure_ = true;
- provider_->FreeUnusedSharedMemory();
- }
-}
-
-GLHelperHolder* GetPostReadbackGLHelperHolder(bool create_if_necessary) {
+// This can only be used for readback postprocessing. It may return null if the
+// channel was lost and not reestablished yet.
+display_compositor::GLHelper* GetPostReadbackGLHelper() {
static GLHelperHolder* g_readback_helper_holder = nullptr;
-
- if (!create_if_necessary && !g_readback_helper_holder)
- return nullptr;
if (g_readback_helper_holder && g_readback_helper_holder->IsLost()) {
delete g_readback_helper_holder;
@@ -273,21 +206,7 @@
if (!g_readback_helper_holder)
g_readback_helper_holder = GLHelperHolder::Create();
- return g_readback_helper_holder;
-}
-
-display_compositor::GLHelper* GetPostReadbackGLHelper() {
- bool create_if_necessary = true;
- return GetPostReadbackGLHelperHolder(create_if_necessary)->gl_helper();
-}
-
-void FreeUnusedGLHelperMemory() {
- bool create_if_necessary = false;
- GLHelperHolder* holder = GetPostReadbackGLHelperHolder(create_if_necessary);
-
- if (holder) {
- holder->FreeUnusedSharedMemoryIfNeeded();
- }
+ return g_readback_helper_holder->gl_helper();
}
void CopyFromCompositingSurfaceFinished(
@@ -306,9 +225,6 @@
if (gl_helper)
gl_helper->GenerateSyncToken(&sync_token);
}
-
- FreeUnusedGLHelperMemory();
-
const bool lost_resource = !sync_token.HasData();
release_callback->Run(sync_token, lost_resource);
UMA_HISTOGRAM_TIMES(kAsyncReadBackString,
« no previous file with comments | « no previous file | content/common/gpu/client/context_provider_command_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698