diff --git a/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.cpp b/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.cpp
index 5fe28b310..02ba868b6 100644
--- a/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.cpp
+++ b/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.cpp
@@ -46,7 +46,6 @@
 #include "utils/Logger.h"
 
 #include <QtDBus/QDBusConnection>
-#include <QtDBus/QDBusMessage>
 #include <QtGui/QImage>
 
 namespace Tomahawk
@@ -167,10 +166,19 @@ FdoNotifyPlugin::nowPlaying( const QVariant &input )
     arguments << qint32( -1 ); //expire_timeout
     message.setArguments( arguments );
 
-    const QDBusMessage &reply = QDBusConnection::sessionBus().call( message );
-    const QVariantList &list = reply.arguments();
-    if ( list.count() > 0 )
-        m_nowPlayingId = list.at( 0 ).toInt();
+    // Handle reply in a callback, so that this a non-blocking call
+    QDBusConnection::sessionBus().callWithCallback( message, this, SLOT( dbusReplyReceived( QDBusMessage ) ) );
+}
+
+/**
+ * Handle the DBus reply triggered by FdoNotifyPlugin::nowPlaying
+ */
+void
+FdoNotifyPlugin::dbusReplyReceived( const QDBusMessage &reply )
+{
+  const QVariantList &list = reply.arguments();
+  if ( list.count() > 0 )
+    m_nowPlayingId = list.at( 0 ).toInt();
 }
 
 } //ns InfoSystem
diff --git a/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h b/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h
index a83e2dc62..ef4603e93 100644
--- a/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h
+++ b/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h
@@ -23,6 +23,8 @@
 #include "infoplugins/InfoPluginDllMacro.h"
 #include "infosystem/InfoSystem.h"
 
+#include <QtDBus/QDBusMessage>
+
 namespace Tomahawk
 {
 
@@ -41,7 +43,9 @@ public:
 
 protected slots:
     virtual void init() {}
-    
+
+    virtual void dbusReplyReceived( const QDBusMessage &reply );
+
     virtual void getInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
     {
         Q_UNUSED( requestData );