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

Unified Diff: media/base/user_input_monitor.cc

Issue 23702008: Adds the UserInputMonitor implementation for Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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 | « media/base/user_input_monitor.h ('k') | media/base/user_input_monitor_linux.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/user_input_monitor.cc
diff --git a/media/base/user_input_monitor.cc b/media/base/user_input_monitor.cc
index 34e07d8136eecac450eac62e59d9886c3a571e87..e43cd626a8f704561372ae5f506806bf0ad679f9 100644
--- a/media/base/user_input_monitor.cc
+++ b/media/base/user_input_monitor.cc
@@ -4,6 +4,7 @@
#include "media/base/user_input_monitor.h"
+#include "base/logging.h"
#include "third_party/skia/include/core/SkPoint.h"
namespace media {
@@ -17,30 +18,37 @@ scoped_ptr<UserInputMonitor> UserInputMonitor::Create(
#endif // DISABLE_USER_INPUT_MONITOR
UserInputMonitor::UserInputMonitor()
- : monitoring_mouse_(false), key_press_counter_references_(0) {}
+ : key_press_counter_references_(0),
+ mouse_listeners_count_(0),
+ mouse_listeners_(new MouseListenerList()) {}
UserInputMonitor::~UserInputMonitor() {
- DCHECK(!monitoring_mouse_);
- DCHECK(!key_press_counter_references_);
+ DCHECK_EQ(0u, key_press_counter_references_);
+ mouse_listeners_->AssertEmpty();
}
void UserInputMonitor::AddMouseListener(MouseEventListener* listener) {
- base::AutoLock auto_lock(lock_);
- mouse_listeners_.AddObserver(listener);
- if (!monitoring_mouse_) {
- StartMouseMonitoring();
- monitoring_mouse_ = true;
- DVLOG(2) << "Started mouse monitoring.";
+ mouse_listeners_->AddObserver(listener);
+ {
+ base::AutoLock auto_lock(lock_);
+ mouse_listeners_count_++;
+ if (mouse_listeners_count_ == 1) {
+ StartMouseMonitoring();
+ DVLOG(2) << "Started mouse monitoring.";
+ }
}
}
void UserInputMonitor::RemoveMouseListener(MouseEventListener* listener) {
- base::AutoLock auto_lock(lock_);
- mouse_listeners_.RemoveObserver(listener);
- if (!mouse_listeners_.might_have_observers()) {
- StopMouseMonitoring();
- monitoring_mouse_ = false;
- DVLOG(2) << "Stopped mouse monitoring.";
+ mouse_listeners_->RemoveObserver(listener);
+ {
+ base::AutoLock auto_lock(lock_);
+ DCHECK_NE(mouse_listeners_count_, 0u);
+ mouse_listeners_count_--;
+ if (mouse_listeners_count_ == 0) {
+ StopMouseMonitoring();
+ DVLOG(2) << "Stopped mouse monitoring.";
+ }
}
}
@@ -63,12 +71,4 @@ void UserInputMonitor::DisableKeyPressMonitoring() {
}
}
-void UserInputMonitor::OnMouseEvent(const SkIPoint& position) {
- base::AutoLock auto_lock(lock_);
- if (!monitoring_mouse_)
- return;
- FOR_EACH_OBSERVER(
- MouseEventListener, mouse_listeners_, OnMouseMoved(position));
-}
-
} // namespace media
« no previous file with comments | « media/base/user_input_monitor.h ('k') | media/base/user_input_monitor_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698