diff --git a/demo/Main.tscn b/demo/Main.tscn
index ef291fb7132f2dc87dff782a2a5505aa804fa86f..7bedbd4e653e562fe3106cda40556a5bed7d687c 100644
--- a/demo/Main.tscn
+++ b/demo/Main.tscn
@@ -9,9 +9,9 @@ func _ready():
 	pass
 	
 func _process(delta):
-	#while _gdpd.has_message() :
-	#	var msg = _gdpd.get_next()
-	#	print(\"got message from pd \", msg)
+	while _gdpd.has_message() :
+		var msg = _gdpd.get_next()
+		print(\"got message from pd \", msg)
 	pass
 	
 func _load_patch(pd_patch) :
diff --git a/src/gdpd.cpp b/src/gdpd.cpp
index 039cccbf08a7b8814bb2185c4a3d5537986e4823..91ee7b071072fa5a6d0d1646dbcd96cfbe4d5ac0 100644
--- a/src/gdpd.cpp
+++ b/src/gdpd.cpp
@@ -182,6 +182,7 @@ int GdPd::start() {
 }
 
 void GdPd::stop() {
+	m_init=false;
 	m_audio.stopStream();
 	m_audio.closeStream();
 	m_pd.computeAudio(false);
@@ -235,8 +236,10 @@ void GdPd::subscribe(String symbStr) {
 }
 
 bool GdPd::has_message() {
-	//receive new messages
-	m_pd.receiveMessages();
+	if(m_init) {
+		//receive new messages
+		m_pd.receiveMessages();
+	}
 
 	//return if more than one message
 	int size = m_messages->size();