1 diff -ur qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp
2 --- qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-06-02 04:03:15.000000000 +0200
3 +++ qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-12-08 22:22:38.000000000 +0100
5 GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
6 return (XEventsQueued(X11->display, QueuedAfterFlush)
7 || (!(source->flags & QEventLoop::ExcludeUserInputEvents)
8 - && !source->d->queuedUserInputEvents.isEmpty()));
9 + && source->d && !source->d->queuedUserInputEvents.isEmpty()));
12 static gboolean x11EventSourceCheck(GSource *s)
14 GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
15 return (XEventsQueued(X11->display, QueuedAfterFlush)
16 || (!(source->flags & QEventLoop::ExcludeUserInputEvents)
17 - && !source->d->queuedUserInputEvents.isEmpty()));
18 + && source->d && !source->d->queuedUserInputEvents.isEmpty()));
21 static gboolean x11EventSourceDispatch(GSource *s, GSourceFunc callback, gpointer user_data)
25 if (!(source->flags & QEventLoop::ExcludeUserInputEvents)
26 - && !source->d->queuedUserInputEvents.isEmpty()) {
27 + && source->d && !source->d->queuedUserInputEvents.isEmpty()) {
28 // process a pending user input event
29 event = source->d->queuedUserInputEvents.takeFirst();
30 } else if (XEventsQueued(X11->display, QueuedAlready)) {
35 - source->d->queuedUserInputEvents.append(event);
37 + source->d->queuedUserInputEvents.append(event);
45 - source->d->queuedUserInputEvents.append(event);
47 + source->d->queuedUserInputEvents.append(event);
54 // send through event filter
55 - if (source->q->filterEvent(&event))
56 + if (source->q && source->q->filterEvent(&event))
59 if (qApp->x11ProcessEvent(&event) == 1)
64 - source->d->runTimersOnceWithNormalPriority();
66 + source->d->runTimersOnceWithNormalPriority();