| Index: base/message_pump_x.cc
|
| diff --git a/base/message_pump_x.cc b/base/message_pump_x.cc
|
| index 3b1ed3da1f58dab6517656fe06fc9ed8eb0fe1f8..2f030411366d322633fb7f3dbf7f96a424bef248 100644
|
| --- a/base/message_pump_x.cc
|
| +++ b/base/message_pump_x.cc
|
| @@ -94,6 +94,8 @@ MessagePumpX::MessagePumpX() : MessagePumpGlib(),
|
| }
|
|
|
| MessagePumpX::~MessagePumpX() {
|
| + FOR_EACH_OBSERVER(MessagePumpObserver, observers(),
|
| + OnMessagePumpDestroying());
|
| g_source_destroy(x_source_);
|
| g_source_unref(x_source_);
|
| XCloseDisplay(g_xdisplay);
|
| @@ -183,6 +185,8 @@ bool MessagePumpX::RunOnce(GMainContext* context, bool block) {
|
| }
|
|
|
| bool MessagePumpX::WillProcessXEvent(XEvent* xevent) {
|
| + if (!observers().might_have_observers())
|
| + return false;
|
| ObserverListBase<MessagePumpObserver>::Iterator it(observers());
|
| MessagePumpObserver* obs;
|
| while ((obs = it.GetNext()) != NULL) {
|
| @@ -193,11 +197,7 @@ bool MessagePumpX::WillProcessXEvent(XEvent* xevent) {
|
| }
|
|
|
| void MessagePumpX::DidProcessXEvent(XEvent* xevent) {
|
| - ObserverListBase<MessagePumpObserver>::Iterator it(observers());
|
| - MessagePumpObserver* obs;
|
| - while ((obs = it.GetNext()) != NULL) {
|
| - obs->DidProcessEvent(xevent);
|
| - }
|
| + FOR_EACH_OBSERVER(MessagePumpObserver, observers(), DidProcessEvent(xevent));
|
| }
|
|
|
| } // namespace base
|
|
|