the "final" (??) fixes for transport state stuff before 2.8.4. y'all let me know...
[ardour.git] / gtk2_ardour / imageframe_socket_handler.cc
index be490e7874da1bf05158d9a125603cd88af325e3..9279a177eeb750d4b70ae51531f3e3d58d4d0af9 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #include <iostream>
 #include "marker_time_axis_view.h"
 #include "ardour_ui.h"
 #include "public_editor.h"
-#include "extra_bind.h"
 #include "gui_thread.h"
 
 #include "i18n.h"
 
 #include <ardour/session.h>
 
-#include <gtkmm.h>
 #include <unistd.h>
 
 using namespace std;
 using namespace ardourvis ;
 using namespace sigc;
+using namespace ARDOUR;
+using namespace PBD;
 
 ImageFrameSocketHandler* ImageFrameSocketHandler::_instance = 0 ;
 
@@ -186,7 +185,7 @@ ImageFrameSocketHandler::image_socket_callback(void *arg, int32_t fd, GdkInputCo
  *         false otherwise
  */
 bool
-ImageFrameSocketHandler::connect(std::string hostIp, int32_t port)
+ImageFrameSocketHandler::connect(const char * hostIp, int32_t port)
 {
        if (is_connected())
        {
@@ -206,7 +205,7 @@ ImageFrameSocketHandler::connect(std::string hostIp, int32_t port)
        sockaddr_in m_addr ;
        m_addr.sin_family = AF_INET ;
        m_addr.sin_port = htons(port) ;
-       m_addr.sin_addr.s_addr = inet_addr(hostIp.c_str()) ;
+       m_addr.sin_addr.s_addr = inet_addr(hostIp) ;
        
        int status = ::connect(theArdourToCompositorSocket, (sockaddr *) &m_addr, sizeof(m_addr)) ;
        
@@ -295,7 +294,7 @@ ImageFrameSocketHandler::get_socket_descriptor()
  * @param src the identity of the object that initiated the change
  */
 void
-ImageFrameSocketHandler::send_imageframe_time_axis_removed(std::string track_id, void* src)
+ImageFrameSocketHandler::send_imageframe_time_axis_removed(const string & track_id, void* src)
 {
        if(this == src || src == 0)
        {
@@ -317,8 +316,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_removed(std::string track_id,
        send_message(msgBuffer.str()) ;
 
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
                
 /**
@@ -330,7 +328,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_removed(std::string track_id,
  * @param time_axis the time axis that has changed
  */
 void
-ImageFrameSocketHandler::send_imageframe_time_axis_renamed(std::string new_id, std::string old_id, void* src, ImageFrameTimeAxis* time_axis)
+ImageFrameSocketHandler::send_imageframe_time_axis_renamed(const string & new_id, const string & old_id, void* src, ImageFrameTimeAxis* time_axis)
 {
        // ENSURE_GUI_THREAD(SigC::bind (mem_fun(*this, &ImageFrameSocketHandler::send_imageframe_time_axis_renamed), new_id, old_id, src, time_axis));
        
@@ -358,8 +356,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_renamed(std::string new_id, s
        send_message(msgBuffer.str()) ;
 
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
 
 //------------------------
@@ -372,7 +369,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_renamed(std::string new_id, s
  * @param src the identity of the object that initiated the change
  */
 void
-ImageFrameSocketHandler::send_marker_time_axis_removed(std::string track_id, void* src)
+ImageFrameSocketHandler::send_marker_time_axis_removed(const string & track_id, void* src)
 {
        if(this == src || src == 0)
        {
@@ -394,8 +391,7 @@ ImageFrameSocketHandler::send_marker_time_axis_removed(std::string track_id, voi
        send_message(msgBuffer.str()) ;
 
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
                
 /**
@@ -407,7 +403,7 @@ ImageFrameSocketHandler::send_marker_time_axis_removed(std::string track_id, voi
  * @param time_axis the time axis that has changed
  */
 void
-ImageFrameSocketHandler::send_marker_time_axis_renamed(std::string new_id, std::string old_id, void* src, MarkerTimeAxis* time_axis)
+ImageFrameSocketHandler::send_marker_time_axis_renamed(const string & new_id, const string & old_id, void* src, MarkerTimeAxis* time_axis)
 {
        // ENSURE_GUI_THREAD(bind (mem_fun(*this, &ImageFrameSocketHandler::send_marker_time_axis_renamed), new_id, old_id, src, time_axis));
        
@@ -435,8 +431,7 @@ ImageFrameSocketHandler::send_marker_time_axis_renamed(std::string new_id, std::
        send_message(msgBuffer.str()) ;
        
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
 
 //---------------------------------
@@ -450,7 +445,7 @@ ImageFrameSocketHandler::send_marker_time_axis_renamed(std::string new_id, std::
  * @param group the group that has changed
  */
 void
-ImageFrameSocketHandler::send_imageframe_time_axis_group_removed(std::string group_id, void* src, ImageFrameTimeAxisGroup* group)
+ImageFrameSocketHandler::send_imageframe_time_axis_group_removed(const string & group_id, void* src, ImageFrameTimeAxisGroup* group)
 {
        if(this == src || src == 0)
        {
@@ -477,8 +472,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_group_removed(std::string gro
        send_message(msgBuffer.str()) ;
 
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
 
 /**
@@ -490,7 +484,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_group_removed(std::string gro
  * @param group the group that has changed
  */
 void
-ImageFrameSocketHandler::send_imageframe_time_axis_group_renamed(std::string new_id, std::string old_id, void* src, ImageFrameTimeAxisGroup* group)
+ImageFrameSocketHandler::send_imageframe_time_axis_group_renamed(const string & new_id, const string & old_id, void* src, ImageFrameTimeAxisGroup* group)
 {
        // ENSURE_GUI_THREAD(bind (mem_fun(*this, &ImageFrameSocketHandler::send_imageframe_time_axis_group_renamed), new_id, old_id, src, group));
        
@@ -522,8 +516,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_group_renamed(std::string new
        send_message(msgBuffer.str()) ;
        
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
 
 
@@ -538,7 +531,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_group_renamed(std::string new
  * @param item the time axis item whos position has changed
  */
 void
-ImageFrameSocketHandler::send_imageframe_view_position_change(jack_nframes_t pos, void* src, ImageFrameView* item)
+ImageFrameSocketHandler::send_imageframe_view_position_change(nframes_t pos, void* src, ImageFrameView* item)
 {
        // ENSURE_GUI_THREAD(bind (mem_fun(*this, &ImageFrameSocketHandler::send_imageframe_view_position_change), pos, src, item));
        
@@ -555,15 +548,14 @@ ImageFrameSocketHandler::send_imageframe_view_position_change(jack_nframes_t pos
        msgBuffer << ardourvis::ITEM_UPDATE << ardourvis::IMAGEFRAME_ITEM << ardourvis::POSITION_CHANGE ;
        
        // add the item description
-       this->string_compose_imageframe_item_desc(item, msgBuffer) ;
+       this->compose_imageframe_item_desc(item, msgBuffer) ;
 
        msgBuffer << std::setw(ardourvis::TIME_VALUE_CHARS) << pos ;
        
        send_message(msgBuffer.str()) ;
        
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
                
 /**
@@ -574,7 +566,7 @@ ImageFrameSocketHandler::send_imageframe_view_position_change(jack_nframes_t pos
  * @param item the item which has had a duration change
  */
 void
-ImageFrameSocketHandler::send_imageframe_view_duration_change(jack_nframes_t dur, void* src, ImageFrameView* item)
+ImageFrameSocketHandler::send_imageframe_view_duration_change(nframes_t dur, void* src, ImageFrameView* item)
 {
        // ENSURE_GUI_THREAD(bind (mem_fun(*this, &ImageFrameSocketHandler::send_imageframe_view_duration_change), dur, src, item));
        
@@ -590,15 +582,14 @@ ImageFrameSocketHandler::send_imageframe_view_duration_change(jack_nframes_t dur
        // add the msg type
        msgBuffer << ardourvis::ITEM_UPDATE << ardourvis::IMAGEFRAME_ITEM << ardourvis::DURATION_CHANGE ;
        
-       this->string_compose_imageframe_item_desc(item, msgBuffer) ;
+       this->compose_imageframe_item_desc(item, msgBuffer) ;
 
        msgBuffer << std::setw(ardourvis::TIME_VALUE_CHARS) << dur ;
        
        send_message(msgBuffer.str()) ;
        
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
                
 /**
@@ -609,7 +600,7 @@ ImageFrameSocketHandler::send_imageframe_view_duration_change(jack_nframes_t dur
  * @param item the renamed item
  */
 void
-ImageFrameSocketHandler::send_imageframe_view_renamed(std::string new_id, std::string old_id, void* src, ImageFrameView* item)
+ImageFrameSocketHandler::send_imageframe_view_renamed(const string & new_id, const string & old_id, void* src, ImageFrameView* item)
 {
        if(this == src || src == 0)
        {
@@ -624,7 +615,7 @@ ImageFrameSocketHandler::send_imageframe_view_renamed(std::string new_id, std::s
        // add the msg type
        msgBuffer << ardourvis::RENAME_ITEM << ardourvis::IMAGEFRAME_ITEM ;
        
-       this->string_compose_imageframe_item_desc(item, msgBuffer) ;
+       this->compose_imageframe_item_desc(item, msgBuffer) ;
        
        // add the old id and length
        msgBuffer << std::setw(3) << old_id.length() ;
@@ -633,8 +624,7 @@ ImageFrameSocketHandler::send_imageframe_view_renamed(std::string new_id, std::s
        send_message(msgBuffer.str()) ;
        
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
                
 /**
@@ -644,7 +634,7 @@ ImageFrameSocketHandler::send_imageframe_view_renamed(std::string new_id, std::s
  * @param item the removed item
  */
 void
-ImageFrameSocketHandler::send_imageframe_view_removed(std::string item_id, void* src, ImageFrameView* item)
+ImageFrameSocketHandler::send_imageframe_view_removed(const string & item_id, void* src, ImageFrameView* item)
 {
        if(this == src || src == 0)
        {
@@ -670,8 +660,7 @@ ImageFrameSocketHandler::send_imageframe_view_removed(std::string item_id, void*
        send_message(msgBuffer.str()) ;
 
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
 
 
@@ -688,7 +677,7 @@ ImageFrameSocketHandler::send_imageframe_view_removed(std::string item_id, void*
  * @param item the time axis item whos position has changed
  */
 void
-ImageFrameSocketHandler::send_marker_view_position_change(jack_nframes_t pos, void* src, MarkerView* item)
+ImageFrameSocketHandler::send_marker_view_position_change(nframes_t pos, void* src, MarkerView* item)
 {
        if(this == src || src == 0)
        {
@@ -703,15 +692,14 @@ ImageFrameSocketHandler::send_marker_view_position_change(jack_nframes_t pos, vo
        msgBuffer << ardourvis::ITEM_UPDATE << ardourvis::MARKER_ITEM << ardourvis::POSITION_CHANGE ;
        
        // add the item description
-       this->string_compose_marker_item_desc(item, msgBuffer) ;
+       this->compose_marker_item_desc(item, msgBuffer) ;
 
        msgBuffer << std::setw(ardourvis::TIME_VALUE_CHARS) << pos ;
        
        send_message(msgBuffer.str()) ;
 
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
                
 /**
@@ -722,7 +710,7 @@ ImageFrameSocketHandler::send_marker_view_position_change(jack_nframes_t pos, vo
  * @param item the time axis item whos position has changed
  */
 void
-ImageFrameSocketHandler::send_marker_view_duration_change(jack_nframes_t dur, void* src, MarkerView* item)
+ImageFrameSocketHandler::send_marker_view_duration_change(nframes_t dur, void* src, MarkerView* item)
 {
        if(this == src || src == 0)
        {
@@ -736,15 +724,14 @@ ImageFrameSocketHandler::send_marker_view_duration_change(jack_nframes_t dur, vo
        // add the msg type
        msgBuffer << ardourvis::ITEM_UPDATE << ardourvis::MARKER_ITEM << ardourvis::DURATION_CHANGE ;
        
-       this->string_compose_marker_item_desc(item, msgBuffer) ;
+       this->compose_marker_item_desc(item, msgBuffer) ;
 
        msgBuffer << std::setw(ardourvis::TIME_VALUE_CHARS) << dur ;
        
        send_message(msgBuffer.str()) ;
 
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }      
 
                
@@ -757,7 +744,7 @@ ImageFrameSocketHandler::send_marker_view_duration_change(jack_nframes_t dur, vo
  * @param item the MarkerView which has been renamed
  */
 void
-ImageFrameSocketHandler::send_marker_view_renamed(std::string new_id, std::string old_id, void* src, MarkerView* item)
+ImageFrameSocketHandler::send_marker_view_renamed(const string & new_id, const string & old_id, void* src, MarkerView* item)
 {
        if(this == src || src == 0)
        {
@@ -772,7 +759,7 @@ ImageFrameSocketHandler::send_marker_view_renamed(std::string new_id, std::strin
        // add the msg type
        msgBuffer << ardourvis::RENAME_ITEM << ardourvis::MARKER_ITEM ;
        
-       this->string_compose_marker_item_desc(item, msgBuffer) ;
+       this->compose_marker_item_desc(item, msgBuffer) ;
        
        // add the old id and length
        msgBuffer << std::setw(3) << old_id.length() ;
@@ -781,8 +768,7 @@ ImageFrameSocketHandler::send_marker_view_renamed(std::string new_id, std::strin
        send_message(msgBuffer.str()) ;
        
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
                
 /**
@@ -793,7 +779,7 @@ ImageFrameSocketHandler::send_marker_view_renamed(std::string new_id, std::strin
  * @param item the MarkerView which has been removed
  */
 void
-ImageFrameSocketHandler::send_marker_view_removed(std::string item_id, void* src, MarkerView* item) 
+ImageFrameSocketHandler::send_marker_view_removed(const string & item_id, void* src, MarkerView* item) 
 {
        if(this == src || src == 0)
        {
@@ -816,8 +802,7 @@ ImageFrameSocketHandler::send_marker_view_removed(std::string item_id, void* src
        send_message(msgBuffer.str()) ;
 
        // XXX should do something with the return
-       std::string retmsg ;
-       read_message(retmsg) ;
+       read_result();
 }
 
 
@@ -1066,7 +1051,7 @@ ImageFrameSocketHandler::handle_item_selected(const char* msg)
                int scene_id_size ;
                int item_id_size ;
        
-               this->dstring_ecompose_imageframe_item_desc(msg, position, track_id, track_id_size, scene_id, scene_id_size, item_id, item_id_size) ;
+               this->decompose_imageframe_item_desc(msg, position, track_id, track_id_size, scene_id, scene_id_size, item_id, item_id_size) ;
                
                // get the named time axis
                ImageFrameTimeAxis* ifta = dynamic_cast<ImageFrameTimeAxis*>(thePublicEditor.get_named_time_axis(track_id)) ;
@@ -1092,7 +1077,7 @@ ImageFrameSocketHandler::handle_item_selected(const char* msg)
                                }
                                else
                                {
-                                       ifv->set_selected(true, this) ;
+                                       ifv->set_selected(true) ;
                                        ifta->get_view()->set_selected_imageframe_view(iftag, ifv) ;
 
                                        thePublicEditor.scroll_timeaxis_to_imageframe_item(ifv) ;
@@ -1165,7 +1150,7 @@ ImageFrameSocketHandler::handle_insert_imageframe_time_axis(const char* msg)
                {
                        ImageFrameTimeAxis* ifta = (ImageFrameTimeAxis*)new_tav ;
                        ifta->VisualTimeAxisRemoved.connect(sigc::mem_fun(*this, &ImageFrameSocketHandler::send_imageframe_time_axis_removed)) ;
-                       ifta->NameChanged.connect(SigC::bind(sigc::mem_fun(*this, &ImageFrameSocketHandler::send_imageframe_time_axis_renamed), ifta)) ;
+                       ifta->NameChanged.connect(sigc::bind(sigc::mem_fun(*this, &ImageFrameSocketHandler::send_imageframe_time_axis_renamed), ifta)) ;
                        
                        send_return_success() ;
                }
@@ -1337,11 +1322,11 @@ ImageFrameSocketHandler::handle_insert_imageframe_view(const char* msg)
        position += image_id_size ;
        
        // get the start frame value
-       jack_nframes_t start = strtoul((get_message_part(position,10,msg).c_str()),0,10) ;
+       nframes_t start = strtoul((get_message_part(position,10,msg).c_str()),0,10) ;
        position += 10 ;
        
        // get the duration value
-       jack_nframes_t duration = strtoul((get_message_part(position,10,msg).c_str()),0,10) ;
+       nframes_t duration = strtoul((get_message_part(position,10,msg).c_str()),0,10) ;
        position += 10 ;
 
        //get the named time axis view we about to add an image to
@@ -1671,9 +1656,9 @@ ImageFrameSocketHandler::handle_imageframe_view_position_update(const char* msg)
        int scene_id_size ;
        int item_id_size ;
        
-       this->dstring_ecompose_imageframe_item_desc(msg, position, track_id, track_id_size, scene_id, scene_id_size, item_id, item_id_size) ;
+       this->decompose_imageframe_item_desc(msg, position, track_id, track_id_size, scene_id, scene_id_size, item_id, item_id_size) ;
        
-       jack_nframes_t start_frame = strtoul(get_message_part(position, ardourvis::TIME_VALUE_CHARS, msg).c_str(), 0, 10) ;
+       nframes_t start_frame = strtoul(get_message_part(position, ardourvis::TIME_VALUE_CHARS, msg).c_str(), 0, 10) ;
        position += ardourvis::TIME_VALUE_CHARS ;
        
        // get the named time axis
@@ -1723,9 +1708,9 @@ ImageFrameSocketHandler::handle_imageframe_view_duration_update(const char* msg)
        int scene_id_size ;
        int item_id_size ;
        
-       this->dstring_ecompose_imageframe_item_desc(msg, position, track_id, track_id_size, scene_id, scene_id_size, item_id, item_id_size) ;
+       this->decompose_imageframe_item_desc(msg, position, track_id, track_id_size, scene_id, scene_id_size, item_id, item_id_size) ;
        
-       jack_nframes_t duration = strtoul(get_message_part(position,ardourvis::TIME_VALUE_CHARS,msg).c_str(),0,10) ;
+       nframes_t duration = strtoul(get_message_part(position,ardourvis::TIME_VALUE_CHARS,msg).c_str(),0,10) ;
        position += ardourvis::TIME_VALUE_CHARS ;
        
        // get the named time axis
@@ -1774,7 +1759,7 @@ ImageFrameSocketHandler::handle_imageframe_position_lock_update(const char* msg)
        int group_id_size ;
        int item_id_size ;
        
-       this->dstring_ecompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
+       this->decompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
        
        std::string pos_lock = get_message_part(position,1,msg) ;
        bool pos_lock_active = false ;
@@ -1826,9 +1811,9 @@ ImageFrameSocketHandler::handle_imageframe_view_max_duration_update(const char*
        int group_id_size ;
        int item_id_size ;
        
-       this->dstring_ecompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
+       this->decompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
        
-       jack_nframes_t max_duration = strtoul(get_message_part(position,ardourvis::TIME_VALUE_CHARS,msg).c_str(),0,10) ;
+       nframes_t max_duration = strtoul(get_message_part(position,ardourvis::TIME_VALUE_CHARS,msg).c_str(),0,10) ;
        position += ardourvis::TIME_VALUE_CHARS ;
        
        int errcode ;
@@ -1862,7 +1847,7 @@ ImageFrameSocketHandler::handle_imageframe_view_max_duration_enable_update(const
        int group_id_size ;
        int item_id_size ;
        
-       this->dstring_ecompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
+       this->decompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
        
        std::string active = get_message_part(position,1,msg) ;
        bool max_duration_active = false ;
@@ -1914,9 +1899,9 @@ ImageFrameSocketHandler::handle_imageframe_view_min_duration_update(const char*
        int group_id_size ;
        int item_id_size ;
        
-       this->dstring_ecompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
+       this->decompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
        
-       jack_nframes_t min_duration = strtoul(get_message_part(position,ardourvis::TIME_VALUE_CHARS,msg).c_str(),0,10) ;
+       nframes_t min_duration = strtoul(get_message_part(position,ardourvis::TIME_VALUE_CHARS,msg).c_str(),0,10) ;
        position += ardourvis::TIME_VALUE_CHARS ;
        
        int errcode ;
@@ -1950,7 +1935,7 @@ ImageFrameSocketHandler::handle_imageframe_view_min_duration_enable_update(const
        int group_id_size ;
        int item_id_size ;
        
-       this->dstring_ecompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
+       this->decompose_imageframe_item_desc(msg, position, track_id, track_id_size, group_id, group_id_size, item_id, item_id_size) ;
        
        std::string active = get_message_part(position,1,msg) ;
        bool min_duration_active = false ;
@@ -2146,7 +2131,7 @@ ImageFrameSocketHandler::get_message_part(int start, int32_t num_chars, const ch
  * @param item_id_size
  */
 void
-ImageFrameSocketHandler::dstring_ecompose_imageframe_item_desc(const char* msg, int& position, std::string& track_id,
+ImageFrameSocketHandler::decompose_imageframe_item_desc(const char* msg, int& position, std::string& track_id,
        int& track_id_size, std::string& scene_id, int& scene_id_size, std::string& item_id, int& item_id_size)
 {
        // get the track Id size
@@ -2240,7 +2225,7 @@ ImageFrameSocketHandler::compose_marker_item_desc(MarkerView* mv, std::ostringst
  * @return the described item on success, 0 otherwise
  */
 ImageFrameView*
-ImageFrameSocketHandler::get_imageframe_view_from_desc(const std::string& track_id, const std::string& group_id, const std::string& item_id, int& errcode, std::string& errmsg)
+ImageFrameSocketHandler::get_imageframe_view_from_desc(const string & track_id, const string & group_id, const string & item_id, int& errcode, std::string& errmsg)
 {
        ImageFrameView* item = 0 ;
        
@@ -2295,7 +2280,7 @@ ImageFrameSocketHandler::get_imageframe_view_from_desc(const std::string& track_
  * @return the return value of the socket call
  */
 int
-ImageFrameSocketHandler::send_message(const std::string& msg)
+ImageFrameSocketHandler::send_message(const string & msg)
 {
        //std::cout << "Sending Message [" << msg << "]\n" ;
        int retcode = ::send(theArdourToCompositorSocket, msg.c_str(), msg.length(), MSG_NOSIGNAL) ;
@@ -2324,6 +2309,25 @@ ImageFrameSocketHandler::read_message(std::string& msg)
        return(retcode) ;
 }
 
+/**
+ * Reads a reply message ("RT0"/"RT1") from the Socket
+ *
+ * @return true if "RT0" was received,, otherwise false
+ */
+bool
+ImageFrameSocketHandler::read_result()
+{
+       char buf[(ardourvis::RETURN_MSG_SIZE)+1] ;
+       int retcode = ::recv(theArdourToCompositorSocket, buf, ardourvis::RETURN_MSG_SIZE, 0) ;
+       buf[ardourvis::RETURN_MSG_SIZE]='\0';
+       if (retcode > 0) {
+         std::cout << "Received Result [" << buf << "]\n" ;
+         if (retcode == ardourvis::RETURN_MSG_SIZE && buf == ardourvis::RETURN_TRUE) {
+           return (true);
+         }
+       }
+       return(false) ;
+}
 
 /**
  * Convenience method to string_compose and send a success messasge back to the Image Compositor