Index: /branches/transport_redesign_2/gui/src/PlayerControl.h
===================================================================
--- /branches/transport_redesign_2/gui/src/PlayerControl.h	(revision 471)
+++ /branches/transport_redesign_2/gui/src/PlayerControl.h	(revision 1089)
@@ -78,5 +78,5 @@
 /// Player control panel
 ///
-class PlayerControl : public QLabel, public Object
+class PlayerControl : public QLabel, public Object, public EventListener
 {
 	Q_OBJECT
@@ -87,4 +87,7 @@
 		void showMessage( const QString& msg, int msec );
 		void showScrollMessage( const QString& msg, int msec, bool test );
+
+		// EventListener callback
+		void jackTimeMasterEvent( int data );
 
 	private slots:
Index: /branches/transport_redesign_2/gui/src/HydrogenApp.cpp
===================================================================
--- /branches/transport_redesign_2/gui/src/HydrogenApp.cpp	(revision 1082)
+++ /branches/transport_redesign_2/gui/src/HydrogenApp.cpp	(revision 1089)
@@ -428,4 +428,8 @@
 					break;
 
+				case EVENT_JACK_TIME_MASTER:
+					pListener->jackTimeMasterEvent( event.value );
+					break;
+
 				default:
 					ERRORLOG( "[onEventQueueTimer] Unhandled event: " + to_string( event.type ) );
Index: /branches/transport_redesign_2/gui/src/PlayerControl.cpp
===================================================================
--- /branches/transport_redesign_2/gui/src/PlayerControl.cpp	(revision 1088)
+++ /branches/transport_redesign_2/gui/src/PlayerControl.cpp	(revision 1089)
@@ -43,4 +43,5 @@
 #include <hydrogen/IO/JackOutput.h>
 #include <hydrogen/Preferences.h>
+#include <hydrogen/JackTimeMasterEvents.h>
 using namespace H2Core;
 
@@ -834,4 +835,16 @@
 
 
+void PlayerControl::jackTimeMasterEvent( int data )
+{
+	switch( data ) {
+	case JACK_TIME_MASTER_NOW:
+		m_pJackMasterBtn->setPressed(true);
+		break;
+	case JACK_TIME_MASTER_NO_MORE:
+		m_pJackMasterBtn->setPressed(false);
+		break;
+	}
+}
+
 //jack time master
 void PlayerControl::jackMasterBtnClicked( Button* )
@@ -840,18 +853,16 @@
 	Preferences *pPref = Preferences::getInstance();
 
+	// This function just manipulates Hydrogen.
+	// The widget updates itself by the EventListener
 	if (m_pJackMasterBtn->isPressed()) {
-		AudioEngine::get_instance()->lock( "PlayerControl::jackMasterBtnClicked" );
+		// Set as time master.
+		Hydrogen::get_instance()->setJackTimeMaster(false);
 		pPref->m_bJackMasterMode = Preferences::USE_JACK_TIME_MASTER;
-		AudioEngine::get_instance()->unlock();
-		(HydrogenApp::getInstance())->setStatusBarMessage(trUtf8(" Jack-Time-Master mode = On"), 5000);
-		Hydrogen::get_instance()->setJackTimeMaster(false);
-		
-	}
-	else {
-		AudioEngine::get_instance()->lock( "PlayerControl::jackMasterBtnClicked" );
+		HydrogenApp::getInstance()->setStatusBarMessage(trUtf8(" Jack-Time-Master mode = On"), 5000);
+	}
+	else {
+		// Clear time master.
 		pPref->m_bJackMasterMode = Preferences::NO_JACK_TIME_MASTER;
-		AudioEngine::get_instance()->unlock();
 		(HydrogenApp::getInstance())->setStatusBarMessage(trUtf8(" Jack-Time-Master mode = Off"), 5000);
-		//m_pControlsBBTPanel->hide();
 		Hydrogen::get_instance()->clearJackTimeMaster();
 	}
Index: /branches/transport_redesign_2/gui/src/EventListener.h
===================================================================
--- /branches/transport_redesign_2/gui/src/EventListener.h	(revision 1082)
+++ /branches/transport_redesign_2/gui/src/EventListener.h	(revision 1089)
@@ -41,4 +41,5 @@
 		virtual void progressEvent( int nValue ) { UNUSED( nValue ); }
 		virtual void transportEvent( H2Core::TransportPosition::State state ) { UNUSED( state ); }
+		virtual void jackTimeMasterEvent( int nValue ) { UNUSED( nValue ); }
 
 		virtual ~EventListener() {}
Index: /branches/transport_redesign_2/libs/hydrogen/include/hydrogen/event_queue.h
===================================================================
--- /branches/transport_redesign_2/libs/hydrogen/include/hydrogen/event_queue.h	(revision 1082)
+++ /branches/transport_redesign_2/libs/hydrogen/include/hydrogen/event_queue.h	(revision 1089)
@@ -44,5 +44,6 @@
 	EVENT_METRONOME,
 	EVENT_PROGRESS,
-	EVENT_TRANSPORT
+	EVENT_TRANSPORT,
+	EVENT_JACK_TIME_MASTER
 };
 
Index: /branches/transport_redesign_2/libs/hydrogen/include/hydrogen/JackTimeMasterEvents.h
===================================================================
--- /branches/transport_redesign_2/libs/hydrogen/include/hydrogen/JackTimeMasterEvents.h	(revision 1089)
+++ /branches/transport_redesign_2/libs/hydrogen/include/hydrogen/JackTimeMasterEvents.h	(revision 1089)
@@ -0,0 +1,34 @@
+/*
+ * Hydrogen
+ * Copyright(c) 2002-2008 by Alex >Comix< Cominu [comix@users.sourceforge.net]
+ *
+ * http://www.hydrogen-music.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY, without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+#ifndef H2CORE_JACKTIMEMASTEREVENTS_H
+#define H2CORE_JACKTIMEMASTEREVENTS_H
+
+namespace H2Core
+{
+
+// Jack Time Master States
+#define JACK_TIME_MASTER_NO_MORE 0
+#define JACK_TIME_MASTER_NOW 1
+
+} // namespace H2Core
+
+#endif // H2CORE_JACKTIMEMASTEREVENTS_H
Index: /branches/transport_redesign_2/libs/hydrogen/src/transport/H2Transport.cpp
===================================================================
--- /branches/transport_redesign_2/libs/hydrogen/src/transport/H2Transport.cpp	(revision 1088)
+++ /branches/transport_redesign_2/libs/hydrogen/src/transport/H2Transport.cpp	(revision 1089)
@@ -92,5 +92,5 @@
 {
     if( d->heartbeat_jtm == false && d->presumed_jtm == true ) {
-	EventQueue::get_instance()->push_event( EVENT_JACK_MASTER, JACK_MASTER_NO_MORE );
+	EventQueue::get_instance()->push_event( EVENT_JACK_TIME_MASTER, JACK_TIME_MASTER_NO_MORE );
 	d->presumed_jtm = false;
     }
@@ -127,9 +127,16 @@
 bool H2Transport::setJackTimeMaster(bool if_none_already)
 {
+    bool rv;
+
     if( ! d->jtm.get() ) {
 	d->jtm.reset( new JackTimeMaster );
 	d->jtm->set_current_song( d->pSong );
     }
-    return d->jtm->setMaster(if_none_already);
+
+    rv = d->jtm->setMaster(if_none_already);
+    if( rv ) {
+	EventQueue::get_instance()->push_event( EVENT_JACK_TIME_MASTER, JACK_TIME_MASTER_NOW );
+    }
+    return rv;
 }
 
@@ -138,4 +145,5 @@
     if( d->jtm.get() ) {
 	d->jtm->clearMaster();
+	EventQueue::get_instance()->push_event( EVENT_JACK_TIME_MASTER, JACK_TIME_MASTER_NO_MORE );
     }
 }
Index: /branches/transport_redesign_2/libs/hydrogen/src/transport/JackTimeMaster.h
===================================================================
--- /branches/transport_redesign_2/libs/hydrogen/src/transport/JackTimeMaster.h	(revision 1088)
+++ /branches/transport_redesign_2/libs/hydrogen/src/transport/JackTimeMaster.h	(revision 1089)
@@ -25,4 +25,5 @@
 #include <QtCore/QMutex>
 #include <jack/transport.h>
+#include <hydrogen/JackTimeMasterEvents.h>
 
 namespace H2Core
@@ -58,4 +59,8 @@
     }; // class JackTimeMaster
 
+/////////////////////////////////////////////////////////////
+// FOR THE EVENT QUEUE DEFINES, SEE JackTimeMasterEvents.h //
+/////////////////////////////////////////////////////////////
+
 } // namespace H2Core
 
