From: Braden M. <br...@us...> - 2007-03-25 07:35:29
|
Update of /cvsroot/openvrml/openvrml/src/openvrml-player In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29548/src/openvrml-player Modified Files: Tag: OpenVRML-0_16-BRANCH player.cpp Log Message: Don't send destroy-stream for requested streams for which new-stream was never sent. Index: player.cpp =================================================================== RCS file: /cvsroot/openvrml/openvrml/src/openvrml-player/player.cpp,v retrieving revision 1.1.2.18 retrieving revision 1.1.2.19 diff -C2 -d -r1.1.2.18 -r1.1.2.19 *** player.cpp 15 Mar 2007 22:07:14 -0000 1.1.2.18 --- player.cpp 25 Mar 2007 07:35:28 -0000 1.1.2.19 *************** *** 605,620 **** &msgs_in_queue))) { if (msg->msg == CURLMSG_DONE) { ! const stream_data_map_t::size_type num_erased = ! callback_data->stream_data_map.erase(msg->easy_handle); ! g_assert(num_erased == 1); g_assert(curl_source->outstanding_handles > 0); --curl_source->outstanding_handles; - std::ostringstream command; - command << "destroy-stream " << ptrdiff_t(msg->easy_handle) - << '\n'; - const ssize_t bytes_written = ::write_command(command.str()); - g_return_val_if_fail( - bytes_written == ssize_t(command.str().length()), - false); // --- 605,642 ---- &msgs_in_queue))) { if (msg->msg == CURLMSG_DONE) { ! const stream_data_map_t::iterator entry = ! callback_data->stream_data_map.find(msg->easy_handle); ! g_assert(entry != callback_data->stream_data_map.end()); ! // ! // If the stream data was never initialized, then new-stream was ! // never sent for it. In that case, we shouldn't send ! // destroy-stream. ! // ! if (entry->second.initialized()) { ! std::ostringstream command; ! command << "destroy-stream " << ptrdiff_t(msg->easy_handle) ! << '\n'; ! const ssize_t bytes_written = ::write_command(command.str()); ! g_return_val_if_fail( ! bytes_written == ssize_t(command.str().length()), ! false); ! } else { ! const char * url = 0; ! const CURLcode getinfo_result = ! curl_easy_getinfo(msg->easy_handle, ! CURLINFO_EFFECTIVE_URL, &url); ! OPENVRML_PLAYER_CURL_EASY_RETURN_VAL_IF_ERROR(getinfo_result, ! false); ! std::ostringstream command; ! command << "get-url-result " << url << ' ' << 1 << '\n'; ! const ssize_t bytes_written = write_command(command.str()); ! g_return_val_if_fail( ! bytes_written == ssize_t(command.str().length()), ! false); ! } ! ! callback_data->stream_data_map.erase(entry); g_assert(curl_source->outstanding_handles > 0); --curl_source->outstanding_handles; // *************** *** 719,728 **** false); ++curl_source->outstanding_handles; - std::ostringstream command; - command << "get-url-result " << url << ' ' << 0 << '\n'; - const ssize_t bytes_written = write_command(command.str()); - g_return_val_if_fail( - bytes_written == ssize_t(command.str().length()), - false); if (req_data.source_callback_data->stream_data_map.size() == 1) { int running_handles; --- 741,744 ---- *************** *** 752,759 **** using boost::ref; ! const char * type = 0; CURLcode getinfo_result = curl_easy_getinfo(stream_data.handle(), ! CURLINFO_CONTENT_TYPE, &type); OPENVRML_PLAYER_CURL_EASY_RETURN_VAL_IF_ERROR(getinfo_result, 0); --- 768,791 ---- using boost::ref; ! // ! // If we're writing data, we send 0 for get-url-result. ! // ! const char * url = 0; CURLcode getinfo_result = curl_easy_getinfo(stream_data.handle(), ! CURLINFO_EFFECTIVE_URL, &url); ! OPENVRML_PLAYER_CURL_EASY_RETURN_VAL_IF_ERROR(getinfo_result, 0); ! ! std::ostringstream get_url_result_command; ! get_url_result_command << "get-url-result " << url << ' ' << 0 << '\n'; ! const ssize_t bytes_written = ! ::write_command(get_url_result_command.str()); ! g_return_val_if_fail( ! bytes_written == ssize_t(get_url_result_command.str().length()), ! false); ! ! const char * type = 0; ! getinfo_result = curl_easy_getinfo(stream_data.handle(), ! CURLINFO_CONTENT_TYPE, &type); OPENVRML_PLAYER_CURL_EASY_RETURN_VAL_IF_ERROR(getinfo_result, 0); *************** *** 776,798 **** } ! std::ostringstream command; ! command << "new-stream " << ptrdiff_t(stream_data.handle()) << ' ' ! << (type ? type : "application/octet-stream") << ' ' ! << stream_data.url() << '\n'; ! write_command(command.str()); stream_data.initialize(); } ! std::ostringstream command; ! command << "write " << ptrdiff_t(stream_data.handle()) << ' ' ! << size * nmemb << '\n'; const char * data = static_cast<char *>(ptr); for (; data != static_cast<char *>(ptr) + size * nmemb; ++data) { ! command.put(*data); } ! const ssize_t bytes_written = ::write_command(command.str()); ! g_assert(bytes_written == ssize_t(command.str().length())); return size_t(data - static_cast<char *>(ptr)); --- 808,831 ---- } ! std::ostringstream new_stream_command; ! new_stream_command ! << "new-stream " << ptrdiff_t(stream_data.handle()) << ' ' ! << (type ? type : "application/octet-stream") << ' ' ! << stream_data.url() << '\n'; ! ::write_command(new_stream_command.str()); stream_data.initialize(); } ! std::ostringstream write_command; ! write_command << "write " << ptrdiff_t(stream_data.handle()) << ' ' ! << size * nmemb << '\n'; const char * data = static_cast<char *>(ptr); for (; data != static_cast<char *>(ptr) + size * nmemb; ++data) { ! write_command.put(*data); } ! const ssize_t bytes_written = ::write_command(write_command.str()); ! g_assert(bytes_written == ssize_t(write_command.str().length())); return size_t(data - static_cast<char *>(ptr)); |