
adeffs.mythtv at gmail
Mar 12, 2008, 7:22 AM
Post #7 of 11
(1472 views)
Permalink
|
|
Re: Shoutcast patch ; updated for svn 16380.
[In reply to]
|
|
On Tue, Mar 11, 2008 at 1:51 AM, Zdzislaw Gorlicki <zdzisekg [at] comcast> wrote: <snip> > I tried to send a manually corrected patch, but I guess it was too big > for the mailing list. To resolve the failed hunk make the > mythobservable.cpp portion of the patch look like this: <snip> Tried to apply your adjustment to 16517 and still got: patching file mythtv/libs/libmyth/mythobservable.cpp Hunk #1 FAILED at 12. 1 out of 1 hunk FAILED -- saving rejects to file mythtv/libs/libmyth/mythobservable.cpp.rej here's what the rej file shows: $ more mythtv/libs/libmyth/mythobservable.cpp.rej *************** *** 12,59 **** void MythObservable::addListener(QObject *listener) { if (m_listeners.find(listener) == -1) m_listeners.append(listener); } void MythObservable::removeListener(QObject *listener) { if (m_listeners.find(listener) != -1) m_listeners.remove(listener); } - QObject* MythObservable::firstListener() - { - return m_listeners.first(); - } - - QObject* MythObservable::nextListener() - { - return m_listeners.next(); - } - QPtrList<QObject> MythObservable::getListeners() { return m_listeners; } void MythObservable::dispatch(MythEvent &event) { - QObject *listener = firstListener(); - while (listener) { QApplication::postEvent(listener, event.clone()); - listener = nextListener(); } } void MythObservable::dispatchNow(MythEvent &event) { - QObject *listener = firstListener(); - while (listener) { QApplication::sendEvent(listener, event.clone()); - listener = nextListener(); } } --- 12,66 ---- void MythObservable::addListener(QObject *listener) { + QMutexLocker locked(&m_mutex); if (m_listeners.find(listener) == -1) m_listeners.append(listener); } void MythObservable::removeListener(QObject *listener) { + QMutexLocker locked(&m_mutex); if (m_listeners.find(listener) != -1) m_listeners.remove(listener); } QPtrList<QObject> MythObservable::getListeners() { + QMutexLocker locked(&m_mutex); return m_listeners; } void MythObservable::dispatch(MythEvent &event) { + // Copy the list and iterate on the copy, in case another thread + // modifies the list. + + m_mutex.lock (); + QPtrList<QObject> listeners(m_listeners); + m_mutex.unlock (); + + QPtrListIterator<QObject> it (listeners); + while (class QObject *listener = it.current ()) { QApplication::postEvent(listener, event.clone()); + ++it; } } void MythObservable::dispatchNow(MythEvent &event) { + // Copy the list and iterate on the copy, in case another thread + // modifies the list. + + m_mutex.lock (); + QPtrList<QObject> listeners(m_listeners); + m_mutex.unlock (); + + QPtrListIterator<QObject> it (listeners); + while (class QObject *listener = it.current ()) { QApplication::sendEvent(listener, event.clone()); + ++it; } } -- Steve _______________________________________________ mythtv-dev mailing list mythtv-dev [at] mythtv http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
|