summaryrefslogtreecommitdiffstats
path: root/chrome/common/gtk_util.cc
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-08 03:58:29 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-08 03:58:29 +0000
commit16e0efd89b890932ff32fb612228b48dea4371fa (patch)
treee8de88cf77fbc568fae0d377392ded1df0cb33f7 /chrome/common/gtk_util.cc
parent8351861274bcfad6e2c3580f7256d8d863ac4f17 (diff)
downloadchromium_src-16e0efd89b890932ff32fb612228b48dea4371fa.zip
chromium_src-16e0efd89b890932ff32fb612228b48dea4371fa.tar.gz
chromium_src-16e0efd89b890932ff32fb612228b48dea4371fa.tar.bz2
linux: port Jankometer
Originally I had split it into multiple files, but I think it's cleaner to just use one. (I want to use this for measuring plugin jank.) BUG=8077 Review URL: http://codereview.chromium.org/155194 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20130 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/gtk_util.cc')
-rw-r--r--chrome/common/gtk_util.cc73
1 files changed, 73 insertions, 0 deletions
diff --git a/chrome/common/gtk_util.cc b/chrome/common/gtk_util.cc
index c126cac..e985bf6 100644
--- a/chrome/common/gtk_util.cc
+++ b/chrome/common/gtk_util.cc
@@ -61,6 +61,79 @@ WindowOpenDisposition DispositionFromEventFlags(guint event_flags) {
return false /*event.IsAltDown()*/ ? SAVE_TO_DISK : CURRENT_TAB;
}
+guint32 GetGdkEventTime(GdkEvent* event) {
+ // The order of these entries in the switch statement match the GDK enum.
+ switch (event->type) {
+ case GDK_NOTHING:
+ case GDK_DELETE:
+ case GDK_DESTROY:
+ case GDK_EXPOSE:
+ return 0;
+
+ case GDK_MOTION_NOTIFY:
+ return reinterpret_cast<GdkEventMotion*>(event)->time;
+
+ case GDK_BUTTON_PRESS:
+ case GDK_2BUTTON_PRESS:
+ case GDK_3BUTTON_PRESS:
+ case GDK_BUTTON_RELEASE:
+ return reinterpret_cast<GdkEventButton*>(event)->time;
+
+ case GDK_KEY_PRESS:
+ case GDK_KEY_RELEASE:
+ return reinterpret_cast<GdkEventKey*>(event)->time;
+
+ case GDK_ENTER_NOTIFY:
+ case GDK_LEAVE_NOTIFY:
+ return reinterpret_cast<GdkEventCrossing*>(event)->time;
+
+ case GDK_FOCUS_CHANGE:
+ case GDK_CONFIGURE:
+ case GDK_MAP:
+ case GDK_UNMAP:
+ return 0;
+
+ case GDK_PROPERTY_NOTIFY:
+ return reinterpret_cast<GdkEventProperty*>(event)->time;
+
+ case GDK_SELECTION_CLEAR:
+ case GDK_SELECTION_REQUEST:
+ case GDK_SELECTION_NOTIFY:
+ return reinterpret_cast<GdkEventSelection*>(event)->time;
+
+ case GDK_PROXIMITY_IN:
+ case GDK_PROXIMITY_OUT:
+ return reinterpret_cast<GdkEventProximity*>(event)->time;
+
+ case GDK_DRAG_ENTER:
+ case GDK_DRAG_LEAVE:
+ case GDK_DRAG_MOTION:
+ case GDK_DRAG_STATUS:
+ case GDK_DROP_START:
+ case GDK_DROP_FINISHED:
+ return reinterpret_cast<GdkEventDND*>(event)->time;
+
+ case GDK_CLIENT_EVENT:
+ case GDK_VISIBILITY_NOTIFY:
+ case GDK_NO_EXPOSE:
+ return 0;
+
+ case GDK_SCROLL:
+ return reinterpret_cast<GdkEventScroll*>(event)->time;
+
+ case GDK_WINDOW_STATE:
+ case GDK_SETTING:
+ return 0;
+
+ case GDK_OWNER_CHANGE:
+ return reinterpret_cast<GdkEventOwnerChange*>(event)->time;
+
+ case GDK_GRAB_BROKEN:
+ default:
+ return 0;
+ }
+}
+
} // namespace event_utils
namespace gtk_util {