[Opalvoip-svn] SF.net SVN: opalvoip: [19630] opal/trunk
Brought to you by:
csoutheren,
rjongbloed
From: <cso...@us...> - 2008-02-29 06:00:42
|
Revision: 19630 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=19630&view=rev Author: csoutheren Date: 2008-02-28 22:00:42 -0800 (Thu, 28 Feb 2008) Log Message: ----------- Fix sending of VFU messages Add VFU send command to OpenPhone Modified Paths: -------------- opal/trunk/samples/openphone/main.cxx opal/trunk/samples/openphone/main.h opal/trunk/samples/openphone/openphone.wxg opal/trunk/src/sip/sipcon.cxx opal/trunk/src/sip/sippdu.cxx Modified: opal/trunk/samples/openphone/main.cxx =================================================================== --- opal/trunk/samples/openphone/main.cxx 2008-02-29 05:10:58 UTC (rev 19629) +++ opal/trunk/samples/openphone/main.cxx 2008-02-29 06:00:42 UTC (rev 19630) @@ -338,6 +338,7 @@ EVT_MENU(XRCID("MenuPaste"), MyManager::OnPasteSpeedDial) EVT_MENU(XRCID("MenuDelete"), MyManager::OnDeleteSpeedDial) EVT_MENU(XRCID("MenuOptions"), MyManager::OnOptions) + EVT_MENU(XRCID("MenuSendVFU"), MyManager::OnVFU) EVT_SPLITTER_SASH_POS_CHANGED(SplitterID, MyManager::OnSashPositioned) EVT_LIST_ITEM_ACTIVATED(SpeedDialsID, MyManager::OnSpeedDialActivated) @@ -1696,6 +1697,25 @@ } +void MyManager::OnVFU(wxCommandEvent& /*event*/) +{ + PSafePtr<OpalCall> call = GetCall(); + if (call == NULL) + return; + + for (int i = 0; ; i++) { + PSafePtr<OpalConnection> connection = call->GetConnection(i, PSafeReadOnly); + if (connection == NULL) + break; + if (!PIsDescendant(&(*connection), OpalPCSSConnection) && !PIsDescendant(&(*connection), OpalLineConnection)) { + OpalVideoUpdatePicture cmd; + connection->OnMediaCommand(cmd, 0); + break; + } + } +} + + PString MyManager::ReadUserInput(OpalConnection & connection, const char * terminators, unsigned, @@ -2035,6 +2055,7 @@ dlg.ShowModal(); } + BEGIN_EVENT_TABLE(OptionsDialog, wxDialog) //////////////////////////////////////// // General fields Modified: opal/trunk/samples/openphone/main.h =================================================================== --- opal/trunk/samples/openphone/main.h 2008-02-29 05:10:58 UTC (rev 19629) +++ opal/trunk/samples/openphone/main.h 2008-02-29 06:00:42 UTC (rev 19630) @@ -599,6 +599,7 @@ void OnPasteSpeedDial(wxCommandEvent& event); void OnDeleteSpeedDial(wxCommandEvent& event); void OnOptions(wxCommandEvent& event); + void OnVFU(wxCommandEvent& event); void OnSashPositioned(wxSplitterEvent& event); void OnSpeedDialActivated(wxListEvent& event); void OnSpeedDialColumnResize(wxListEvent& event); Modified: opal/trunk/samples/openphone/openphone.wxg =================================================================== --- opal/trunk/samples/openphone/openphone.wxg 2008-02-29 05:10:58 UTC (rev 19629) +++ opal/trunk/samples/openphone/openphone.wxg 2008-02-29 06:00:42 UTC (rev 19630) @@ -1,7 +1,7 @@ <?xml version="1.0"?> -<!-- generated by wxGlade 0.6.1 on Wed Feb 27 14:28:09 2008 --> +<!-- generated by wxGlade 0.6.3 on Fri Feb 29 11:40:03 2008 --> -<application path="C:\Work\opal\samples\openphone\openphone.xrc" name="OpenPhone" class="" option="0" language="XRC" top_window="CallDialog" encoding="ISO-8859-1" use_gettext="0" overwrite="0" use_new_namespace="1" for_version="2.8" is_template="0"> +<application path="C:\opal\samples\openphone\openphone.xrc" name="OpenPhone" class="" option="0" language="XRC" top_window="CallDialog" encoding="ISO-8859-1" use_gettext="0" overwrite="0" use_new_namespace="1" for_version="2.8" is_template="0"> <object class="MyMenuBar" name="MenuBar" base="EditMenuBar"> <menus> <menu name="" label="&File"> @@ -101,6 +101,10 @@ <label>&Options...</label> <name>MenuOptions</name> </item> + <item> + <label>Send &VFU</label> + <name>MenuSendVFU</name> + </item> </menu> <menu name="" label="&Help"> <item> @@ -2754,7 +2758,7 @@ </object> <object class="InCallPanel" name="InCallPanel" base="EditTopLevelPanel"> <style>wxSUNKEN_BORDER|wxTAB_TRAVERSAL</style> - <size>300, 150d</size> + <size>398, 217d</size> <object class="wxBoxSizer" name="sizer_52" base="EditBoxSizer"> <orient>wxHORIZONTAL</orient> <object class="sizeritem"> Modified: opal/trunk/src/sip/sipcon.cxx =================================================================== --- opal/trunk/src/sip/sipcon.cxx 2008-02-29 05:10:58 UTC (rev 19629) +++ opal/trunk/src/sip/sipcon.cxx 2008-02-29 06:00:42 UTC (rev 19630) @@ -1330,6 +1330,9 @@ PSafePtr<SIPTransaction> transaction = endpoint.GetTransaction(pdu.GetTransactionID(), PSafeReference); if (transaction != NULL) transaction->OnReceivedResponse(pdu); + else { + PTRACE(3, "SIP\tCannot find transaction for response"); + } } return; } @@ -2359,8 +2362,11 @@ str << tone; } infoTransaction->GetEntityBody() = str; - infoTransaction->WaitForCompletion(); - return !infoTransaction->IsFailed(); + + // cannot wait for completion as this keeps the SIPConnection locks, thus preventing the response from being processed + //infoTransaction->WaitForCompletion(); + //return !infoTransaction->IsFailed(); + return infoTransaction->Start(); } // anything else - send as RFC 2833 @@ -2392,8 +2398,10 @@ "</vc_primitive>" "</media_control>" ; - infoTransaction->WaitForCompletion(); - if (infoTransaction->IsFailed()) { } + // cannot wait for completion as this keeps the SIPConnection locks, thus preventing the response from being processed + //infoTransaction->WaitForCompletion(); + //if (infoTransaction->IsFailed()) { } + infoTransaction->Start(); } #endif } Modified: opal/trunk/src/sip/sippdu.cxx =================================================================== --- opal/trunk/src/sip/sippdu.cxx 2008-02-29 05:10:58 UTC (rev 19629) +++ opal/trunk/src/sip/sippdu.cxx 2008-02-29 06:00:42 UTC (rev 19630) @@ -1908,6 +1908,9 @@ PBoolean SIPTransaction::Start() { + if (state == Completed) + return PTrue; + endpoint.AddTransaction(this); if (state != NotStarted) { @@ -1948,12 +1951,7 @@ void SIPTransaction::WaitForCompletion() { - if (state >= Completed) - return; - - if (state == NotStarted) - Start(); - + Start(); completed.Wait(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |