[mythtv] Shoutcast patch ; updated for svn 16380.

Steven Adeff adeffs.mythtv at gmail.com
Wed Mar 12 14:22:55 UTC 2008


On Tue, Mar 11, 2008 at 1:51 AM, Zdzislaw Gorlicki <zdzisekg at comcast.net> 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


More information about the mythtv-dev mailing list