X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fimageframe_socket_handler.cc;h=9279a177eeb750d4b70ae51531f3e3d58d4d0af9;hb=862cb478a2b9dfa3822c581241396582050bfa44;hp=be490e7874da1bf05158d9a125603cd88af325e3;hpb=4c509656223d3ed1f0fab504cb483090d38972f9;p=ardour.git diff --git a/gtk2_ardour/imageframe_socket_handler.cc b/gtk2_ardour/imageframe_socket_handler.cc index be490e7874..9279a177ee 100644 --- a/gtk2_ardour/imageframe_socket_handler.cc +++ b/gtk2_ardour/imageframe_socket_handler.cc @@ -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 @@ -40,19 +39,19 @@ #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 -#include #include 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(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