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

Unified Diff: cc/output/context_cache_controller.h

Issue 2382443012: Revert of Idle cleanup for worker context (Closed)
Patch Set: Created 4 years, 3 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 | « cc/BUILD.gn ('k') | cc/output/context_cache_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/context_cache_controller.h
diff --git a/cc/output/context_cache_controller.h b/cc/output/context_cache_controller.h
index 357e5daacb5862f0863492625804ec1e8c7353bc..03f7e2cd74f9117e11cb95ac6db4a747199301f7 100644
--- a/cc/output/context_cache_controller.h
+++ b/cc/output/context_cache_controller.h
@@ -10,13 +10,11 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
#include "cc/base/cc_export.h"
class GrContext;
namespace base {
-class Lock;
class SingleThreadTaskRunner;
}
@@ -27,26 +25,26 @@
namespace cc {
// ContextCacheController manages clearing cached data on ContextProvider when
-// appropriate. Currently, cache clearing is triggered when the Context
-// provider transitions from Visible to Not Visible, or from Busy to Idle. As a
-// ContextProvider may have multiple clients, ContextCacheController tracks
-// visibility and idle status across all clients and only cleans up when
-// appropriate.
+// appropriate. Currently, cache clearing happens when the ContextProvider
+// transitions from visible to not visible. As a ContextProvider may have
+// multiple clients, ContextCacheController tracks visibility across all
+// clients and only cleans up when appropriate.
+//
+// Note: Virtuals on this function are for testing only. This function is not
+// designed to have multiple implementations.
class CC_EXPORT ContextCacheController {
public:
- class CC_EXPORT ScopedToken {
+ class CC_EXPORT ScopedVisibility {
public:
- ~ScopedToken();
+ ~ScopedVisibility();
private:
friend class ContextCacheController;
- ScopedToken();
+ ScopedVisibility();
void Release();
bool released_ = false;
};
- using ScopedVisibility = ScopedToken;
- using ScopedBusy = ScopedToken;
ContextCacheController(
gpu::ContextSupport* context_support,
@@ -54,7 +52,6 @@
virtual ~ContextCacheController();
void SetGrContext(GrContext* gr_context);
- void SetLock(base::Lock* lock);
// Clients of the owning ContextProvider should call this function when they
// become visible. The returned ScopedVisibility pointer must be passed back
@@ -67,42 +64,17 @@
virtual void ClientBecameNotVisible(
std::unique_ptr<ScopedVisibility> scoped_visibility);
- // Clients of the owning ContextProvider may call this function when they
- // become busy. The returned ScopedBusy pointer must be passed back
- // to ClientBecameNotBusy or it will DCHECK in its destructor.
- std::unique_ptr<ScopedBusy> ClientBecameBusy();
-
- // When a client becomes not busy, it must pass back any ScopedBusy
- // pointers it owns via this function.
- void ClientBecameNotBusy(std::unique_ptr<ScopedBusy> scoped_busy);
+ protected:
+ std::unique_ptr<ScopedVisibility> CreateScopedVisibilityForTesting() const;
+ void ReleaseScopedVisibilityForTesting(
+ std::unique_ptr<ScopedVisibility> scoped_visibility) const;
private:
- void OnIdle(uint32_t idle_generation);
- void PostIdleCallback(uint32_t current_idle_generation) const;
- void InvalidatePendingIdleCallbacks();
-
gpu::ContextSupport* context_support_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
GrContext* gr_context_ = nullptr;
- // If set, |context_lock_| must be held before accessing any member within
- // the idle callback. Exceptions to this are |current_idle_generation_|,
- // which has its own lock, and weak_ptr_ and task_runner_, which may be
- // accessed from multiple threads without locking.
- base::Lock* context_lock_ = nullptr;
-
uint32_t num_clients_visible_ = 0;
- uint32_t num_clients_busy_ = 0;
- bool callback_pending_ = false;
-
- // |current_idle_generation_lock_| must be held when accessing
- // |current_idle_generation_|. |current_idle_generation_lock_| must never be
- // held while acquiring |context_lock_|.
- base::Lock current_idle_generation_lock_;
- uint32_t current_idle_generation_ = 0;
-
- base::WeakPtr<ContextCacheController> weak_ptr_;
- base::WeakPtrFactory<ContextCacheController> weak_factory_;
};
} // namespace cc
« no previous file with comments | « cc/BUILD.gn ('k') | cc/output/context_cache_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698