Index: ui/base/x/events_x.cc |
diff --git a/ui/base/x/events_x.cc b/ui/base/x/events_x.cc |
index cf2499ead1c88b33ab83357a33ceb20a64bda57a..e5b67de9ca6cdc4e49e8e50cc1073721c65c8f01 100644 |
--- a/ui/base/x/events_x.cc |
+++ b/ui/base/x/events_x.cc |
@@ -6,12 +6,17 @@ |
#include <X11/Xlib.h> |
#include <X11/extensions/XInput2.h> |
+#include <string.h> |
#include "base/logging.h" |
#include "ui/base/keycodes/keyboard_code_conversion_x.h" |
#include "ui/base/touch/touch_factory.h" |
#include "ui/gfx/point.h" |
+#if !defined(TOOLKIT_USES_GTK) |
+#include "base/message_pump_x.h" |
+#endif |
+ |
namespace { |
// Scroll amount for each wheelscroll event. 53 is also the value used for GTK+. |
@@ -371,12 +376,25 @@ float GetTouchForce(const base::NativeEvent& native_event) { |
} |
base::NativeEvent CreateNoopEvent() { |
- static XEvent* noop = new XEvent(); |
- noop->xclient.type = ClientMessage; |
- noop->xclient.display = NULL; |
- noop->xclient.window = None; |
- noop->xclient.message_type = 0; |
- noop->xclient.format = 0; |
+ static XEvent* noop = NULL; |
+ if (!noop) { |
+ noop = new XEvent(); |
+ memset(noop, 0, sizeof(XEvent)); |
+ noop->xclient.type = ClientMessage; |
+ noop->xclient.window = None; |
+ noop->xclient.format = 8; |
+ DCHECK(!noop->xclient.display); |
+ } |
+ // TODO(oshima): Remove ifdef once gtk is removed from views. |
+#if defined(TOOLKIT_USES_GTK) |
+ NOTREACHED(); |
+#else |
+ // Make sure we use atom from current xdisplay, which may |
+ // change during the test. |
+ noop->xclient.message_type = XInternAtom( |
+ base::MessagePumpX::GetDefaultXDisplay(), |
+ "noop", False); |
+#endif |
return noop; |
} |