| OLD | NEW |
| 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/message_pump_glib.h" | 5 #include "base/message_pump_glib.h" |
| 6 | 6 |
| 7 #include <fcntl.h> | 7 #include <fcntl.h> |
| 8 #include <math.h> | 8 #include <math.h> |
| 9 | 9 |
| 10 #include <gtk/gtk.h> | 10 #include <gtk/gtk.h> |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 WorkSourceCheck, | 117 WorkSourceCheck, |
| 118 WorkSourceDispatch, | 118 WorkSourceDispatch, |
| 119 NULL | 119 NULL |
| 120 }; | 120 }; |
| 121 | 121 |
| 122 } // namespace | 122 } // namespace |
| 123 | 123 |
| 124 | 124 |
| 125 namespace base { | 125 namespace base { |
| 126 | 126 |
| 127 struct MessagePumpForUI::RunState { | |
| 128 Delegate* delegate; | |
| 129 Dispatcher* dispatcher; | |
| 130 | |
| 131 // Used to flag that the current Run() invocation should return ASAP. | |
| 132 bool should_quit; | |
| 133 | |
| 134 // Used to count how many Run() invocations are on the stack. | |
| 135 int run_depth; | |
| 136 | |
| 137 // This keeps the state of whether the pump got signaled that there was new | |
| 138 // work to be done. Since we eat the message on the wake up pipe as soon as | |
| 139 // we get it, we keep that state here to stay consistent. | |
| 140 bool has_work; | |
| 141 }; | |
| 142 | |
| 143 MessagePumpForUI::MessagePumpForUI() | 127 MessagePumpForUI::MessagePumpForUI() |
| 144 : state_(NULL), | 128 : state_(NULL), |
| 145 context_(g_main_context_default()), | 129 context_(g_main_context_default()), |
| 146 wakeup_gpollfd_(new GPollFD) { | 130 wakeup_gpollfd_(new GPollFD) { |
| 147 // Create our wakeup pipe, which is used to flag when work was scheduled. | 131 // Create our wakeup pipe, which is used to flag when work was scheduled. |
| 148 int fds[2]; | 132 int fds[2]; |
| 149 CHECK_EQ(pipe(fds), 0); | 133 CHECK_EQ(pipe(fds), 0); |
| 150 wakeup_pipe_read_ = fds[0]; | 134 wakeup_pipe_read_ = fds[0]; |
| 151 wakeup_pipe_write_ = fds[1]; | 135 wakeup_pipe_write_ = fds[1]; |
| 152 wakeup_gpollfd_->fd = wakeup_pipe_read_; | 136 wakeup_gpollfd_->fd = wakeup_pipe_read_; |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 DidProcessEvent(event); | 335 DidProcessEvent(event); |
| 352 } | 336 } |
| 353 | 337 |
| 354 // static | 338 // static |
| 355 void MessagePumpForUI::EventDispatcher(GdkEvent* event, gpointer data) { | 339 void MessagePumpForUI::EventDispatcher(GdkEvent* event, gpointer data) { |
| 356 MessagePumpForUI* message_pump = reinterpret_cast<MessagePumpForUI*>(data); | 340 MessagePumpForUI* message_pump = reinterpret_cast<MessagePumpForUI*>(data); |
| 357 message_pump->DispatchEvents(event); | 341 message_pump->DispatchEvents(event); |
| 358 } | 342 } |
| 359 | 343 |
| 360 } // namespace base | 344 } // namespace base |
| OLD | NEW |