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

Unified Diff: ui/events/test/events_test_utils_x11.cc

Issue 136153006: x11/test: Use a custom-deleter for the stored XEvent. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 11 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 | « ui/events/test/events_test_utils_x11.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/test/events_test_utils_x11.cc
diff --git a/ui/events/test/events_test_utils_x11.cc b/ui/events/test/events_test_utils_x11.cc
index 20d1c17da5057eeb33216b0a5232bdd1319b671a..c2876c9a94ebeba0c51bd8fcf7fab2af68ac3de4 100644
--- a/ui/events/test/events_test_utils_x11.cc
+++ b/ui/events/test/events_test_utils_x11.cc
@@ -135,15 +135,25 @@ XEvent* CreateXInput2Event(int deviceid,
namespace ui {
-ScopedXI2Event::ScopedXI2Event() {}
-ScopedXI2Event::~ScopedXI2Event() {
- Cleanup();
+void XEventDeleter::operator()(XEvent* event) {
sky 2014/02/03 04:48:31 Can you add some comments as to why this is necess
sadrul 2014/02/03 15:58:18 Done (added a comment explaining why this is neces
+ if (event->type != GenericEvent)
+ return;
+ XIDeviceEvent* xiev =
+ static_cast<XIDeviceEvent*>(event->xcookie.data);
+ if (xiev) {
+ delete[] xiev->valuators.mask;
+ delete[] xiev->valuators.values;
+ delete[] xiev->buttons.mask;
+ delete xiev;
+ }
}
+ScopedXI2Event::ScopedXI2Event() {}
+ScopedXI2Event::~ScopedXI2Event() {}
+
void ScopedXI2Event::InitKeyEvent(EventType type,
KeyboardCode key_code,
int flags) {
- Cleanup();
XDisplay* display = gfx::GetXDisplay();
event_.reset(new XEvent);
memset(event_.get(), 0, sizeof(XEvent));
@@ -168,7 +178,6 @@ void ScopedXI2Event::InitKeyEvent(EventType type,
void ScopedXI2Event::InitGenericButtonEvent(int deviceid,
EventType type,
int flags) {
- Cleanup();
event_.reset(CreateXInput2Event(deviceid,
XIButtonEventType(type), 0, gfx::Point()));
XIDeviceEvent* xievent = static_cast<XIDeviceEvent*>(event_->xcookie.data);
@@ -179,7 +188,6 @@ void ScopedXI2Event::InitGenericButtonEvent(int deviceid,
void ScopedXI2Event::InitButtonEvent(EventType type,
int flags) {
- Cleanup();
event_.reset(new XEvent);
memset(event_.get(), 0, sizeof(XEvent));
event_->type = XButtonEventType(type);
@@ -214,7 +222,6 @@ void ScopedXI2Event::InitScrollEvent(int deviceid,
int x_offset_ordinal,
int y_offset_ordinal,
int finger_count) {
- Cleanup();
event_.reset(CreateXInput2Event(deviceid, XI_Motion, 0, gfx::Point()));
Valuator valuators[] = {
@@ -234,7 +241,6 @@ void ScopedXI2Event::InitFlingScrollEvent(int deviceid,
int x_velocity_ordinal,
int y_velocity_ordinal,
bool is_cancel) {
- Cleanup();
event_.reset(CreateXInput2Event(deviceid, XI_Motion, deviceid, gfx::Point()));
Valuator valuators[] = {
@@ -254,25 +260,10 @@ void ScopedXI2Event::InitTouchEvent(int deviceid,
int tracking_id,
const gfx::Point& location,
const std::vector<Valuator>& valuators) {
- Cleanup();
event_.reset(CreateXInput2Event(deviceid, evtype, tracking_id, location));
SetUpValuators(valuators);
}
-void ScopedXI2Event::Cleanup() {
- if (event_.get() && event_->type == GenericEvent) {
- XIDeviceEvent* xiev =
- static_cast<XIDeviceEvent*>(event_->xcookie.data);
- if (xiev) {
- delete[] xiev->valuators.mask;
- delete[] xiev->valuators.values;
- delete[] xiev->buttons.mask;
- delete xiev;
- }
- }
- event_.reset();
-}
-
void ScopedXI2Event::SetUpValuators(const std::vector<Valuator>& valuators) {
CHECK(event_.get());
CHECK_EQ(GenericEvent, event_->type);
« no previous file with comments | « ui/events/test/events_test_utils_x11.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698