diff --git a/Account.cpp b/Account.cpp index cdbd9e257fc49396ece5045c4decba8026d11e57..adbecb6e0af6e073fb7e28da31ad002efa4c6c17 100644 --- a/Account.cpp +++ b/Account.cpp @@ -43,7 +43,7 @@ Account::NotifyPropertyChanged(String^ propertyName) { CoreApplicationView^ view = CoreApplication::MainView; view->CoreWindow->Dispatcher->RunAsync( - CoreDispatcherPriority::Normal, + CoreDispatcherPriority::High, ref new DispatchedHandler([this, propertyName]() { PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName)); diff --git a/Call.cpp b/Call.cpp index 6cc2fe319c51b0968b9baf34f07855fb010e4259..1854a8fe2ff61de3ca67f7db71118823d5140ce9 100644 --- a/Call.cpp +++ b/Call.cpp @@ -44,7 +44,7 @@ Call::NotifyPropertyChanged(String^ propertyName) { CoreApplicationView^ view = CoreApplication::MainView; view->CoreWindow->Dispatcher->RunAsync( - CoreDispatcherPriority::Normal, + CoreDispatcherPriority::High, ref new DispatchedHandler([this, propertyName]() { PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName)); @@ -52,17 +52,18 @@ Call::NotifyPropertyChanged(String^ propertyName) })); } -void RingClientUWP::Call::refuse() -{ - RingD::instance->refuseIncommingCall(this); -} - -void RingClientUWP::Call::accept() -{ - RingD::instance->acceptIncommingCall(this); -} - -void RingClientUWP::Call::cancel() -{ - RingD::instance->cancelOutGoingCall(this); -} +//void RingClientUWP::Call::refuse() +//{ +// RingD::instance->refuseIncommingCall(this); +//} +// +//void RingClientUWP::Call::accept() +//{ +// RingD::instance->acceptIncommingCall(this); +//} +// +//void RingClientUWP::Call::cancel() +//{ +// MSG_("!2--->> cancel"); +// RingD::instance->cancelOutGoingCall(this); +//} diff --git a/Call.h b/Call.h index dfebe2140fe5a92904a0c6424da3772a37de669c..fc96d3af4459921cd35b10e7504649f9f2cb87de 100644 --- a/Call.h +++ b/Call.h @@ -56,9 +56,9 @@ protected: void NotifyPropertyChanged(String^ propertyName); internal: - void refuse(); - void accept(); - void cancel(); + //void refuse(); + //void accept(); + //void cancel(); private: CallStatus state_; diff --git a/CallsViewModel.h b/CallsViewModel.h index 24ddbb0e82fe8f32ed5e6325f4b3b0efa2610516..21c68ff08c8746cc81ae1d7927f4acfeba0d905d 100644 --- a/CallsViewModel.h +++ b/CallsViewModel.h @@ -44,7 +44,7 @@ internal: /* functions */ Call^ addNewCall(String^ accountId, String^ callId, String^ from); void clearCallsList(); - void setState(String^ callId, String^ state, int code); // used ? + //void setState(String^ callId, String^ state, int code); // used ? Call^ findCall(String^ callId); /* properties */ diff --git a/Contact.cpp b/Contact.cpp index 155a7ff3de63e6bf050d13587355118a0d2768db..2d94ec1f9497862a388b1fa7c47bb86eb77b137e 100644 --- a/Contact.cpp +++ b/Contact.cpp @@ -52,7 +52,7 @@ Contact::Contact(String^ name, String^ fileContents = Utils::toPlatformString(Utils::getStringFromFile(Utils::toString(messagesFile))); - CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, + CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { if (fileContents != nullptr) DestringifyConversation(fileContents); @@ -72,7 +72,7 @@ Contact::NotifyPropertyChanged(String^ propertyName) { CoreApplicationView^ view = CoreApplication::MainView; view->CoreWindow->Dispatcher->RunAsync( - CoreDispatcherPriority::Normal, + CoreDispatcherPriority::High, ref new DispatchedHandler([this, propertyName]() { PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName)); diff --git a/ContactsViewModel.cpp b/ContactsViewModel.cpp index cb98f5840b03d201a26673a96c1efe7e8c044436..067f2954f4a52b61ea3c785d9bc3110557422bcd 100644 --- a/ContactsViewModel.cpp +++ b/ContactsViewModel.cpp @@ -118,7 +118,7 @@ ContactsViewModel::openContactsFromFile() String^ fileContents = Utils::toPlatformString(Utils::getStringFromFile(Utils::toString(contactsFile))); - CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, + CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { if (fileContents != nullptr) Destringify(fileContents); diff --git a/LoadingPage.xaml.cpp b/LoadingPage.xaml.cpp index a8d24bc2dd374cd932b209deaef649d2a73e5a74..ac0b6cf69882edbb54934d3c77dc77b1f9d50264 100644 --- a/LoadingPage.xaml.cpp +++ b/LoadingPage.xaml.cpp @@ -53,13 +53,13 @@ LoadingPage::LoadingPage() { if (config_exists) { RingD::instance->hasConfig = true; - this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this] () { + this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([this] () { this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(MainPage::typeid)); })); } else { RingD::instance->hasConfig = false; - this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this] () { + this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([this] () { this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(Wizard::typeid)); })); } diff --git a/RingD.cpp b/RingD.cpp index 38033d87208fb76b6197d078c8058dc8dedfaf64..fba4158fd91cfbdf882f5e3887eca9aa3333d911 100644 --- a/RingD.cpp +++ b/RingD.cpp @@ -126,6 +126,7 @@ void RingClientUWP::RingD::acceptIncommingCall(Call^ call) void RingClientUWP::RingD::placeCall(Contact^ contact) { + MSG_("!--->> placeCall"); auto to = contact->ringID_; auto accountId = AccountsViewModel::instance->selectedAccount->accountID_; @@ -134,6 +135,8 @@ void RingClientUWP::RingD::placeCall(Contact^ contact) auto callId2 = DRing::placeCall(accountId2, to2); + + if (callId2 == "") { WNG_("call not created, the daemon didn't return a call Id"); return; @@ -141,6 +144,13 @@ void RingClientUWP::RingD::placeCall(Contact^ contact) auto callId = Utils::toPlatformString(callId2); + + //auto con = ContactsViewModel::instance->findContactByName(to); + auto item = SmartPanelItemsViewModel::instance->findItem(contact); + item->_callId = callId; + MSG_("$1 place call with id : " + Utils::toString(item->_callId)); + + auto call = CallsViewModel::instance->addNewCall(accountId, callId, to); call->isOutGoing = true; @@ -156,7 +166,15 @@ void RingClientUWP::RingD::placeCall(Contact^ contact) void RingClientUWP::RingD::cancelOutGoingCall(Call^ call) { - tasksList_.push(ref new RingD::Task(Request::CancelOutGoingCall, call)); + MSG_("1!--->> cancelOutGoingCall"); + if (call) + tasksList_.push(ref new RingD::Task(Request::CancelOutGoingCall, call)); +} + +void RingClientUWP::RingD::cancelOutGoingCall2(String ^ callId) +{ + MSG_("$1 cancelOutGoingCall2 : " + Utils::toString(callId)); + tasksList_.push(ref new RingD::Task(Request::HangUpCall, callId, 0)); } void @@ -165,6 +183,12 @@ RingClientUWP::RingD::hangUpCall(Call^ call) tasksList_.push(ref new RingD::Task(Request::HangUpCall, call)); } +void RingClientUWP::RingD::hangUpCall2(String ^ callId) +{ + MSG_("$1 hangUpCall2 : "+Utils::toString(callId)); + tasksList_.push(ref new RingD::Task(Request::HangUpCall, callId, 0)); +} + void RingClientUWP::RingD::startDaemon() { @@ -199,10 +223,16 @@ RingClientUWP::RingD::startDaemon() from2 = Utils::TrimRingId(from2); CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync( - CoreDispatcherPriority::Normal, ref new DispatchedHandler([=]() + CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { incomingCall(accountId2, callId2, from2); stateChange(callId2, CallStatus::INCOMING_RINGING, 0); + + + auto contact = ContactsViewModel::instance->findContactByName(from2); + auto item = SmartPanelItemsViewModel::instance->findItem(contact); + item->_callId = callId2; + })); }), DRing::exportable_callback<DRing::CallSignal::StateChange>([this]( @@ -222,7 +252,7 @@ RingClientUWP::RingD::startDaemon() CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync( - CoreDispatcherPriority::Low, ref new DispatchedHandler([=]() + CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { stateChange(callId2, state3, code); })); @@ -243,7 +273,7 @@ RingClientUWP::RingD::startDaemon() MSG_("payload = " + i.second); auto payload = Utils::toPlatformString(i.second); CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync( - CoreDispatcherPriority::Low, ref new DispatchedHandler([=]() + CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { incomingAccountMessage(accountId2, from2, payload); })); @@ -282,7 +312,7 @@ RingClientUWP::RingD::startDaemon() auto payload = Utils::toPlatformString(i.second); CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync( - CoreDispatcherPriority::Low, ref new DispatchedHandler([=]() + CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { incomingAccountMessage(accountId2, from2, payload); })); @@ -294,7 +324,7 @@ RingClientUWP::RingD::startDaemon() { MSG_("<RegistrationStateChanged>: ID = " + account_id + "state = " + state); if (state == DRing::Account::States::REGISTERED) { - CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, + CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { auto frame = dynamic_cast<Frame^>(Window::Current->Content); dynamic_cast<RingClientUWP::MainPage^>(frame->Content)->showLoadingOverlay(false, false); @@ -303,14 +333,14 @@ RingClientUWP::RingD::startDaemon() }), DRing::exportable_callback<DRing::ConfigurationSignal::AccountsChanged>([this]() { - CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, + CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { reloadAccountList(); })); }), DRing::exportable_callback<DRing::Debug::MessageSend>([&](const std::string& toto) { - dispatcher->RunAsync(CoreDispatcherPriority::Normal, + dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { RingDebug::instance->print(toto); })); @@ -359,9 +389,9 @@ RingClientUWP::RingD::startDaemon() { DRing::exportable_callback<DRing::VideoSignal::GetCameraInfo> ([this](const std::string& device, - std::vector<std::string> *formats, - std::vector<unsigned> *sizes, - std::vector<unsigned> *rates) { + std::vector<std::string> *formats, + std::vector<unsigned> *sizes, + std::vector<unsigned> *rates) { MSG_("\n<GetCameraInfo>\n"); auto device_list = VideoManager::instance->captureManager()->deviceList; @@ -384,7 +414,7 @@ RingClientUWP::RingD::startDaemon() std::string format, const int width, const int height, - const int rate) { + const int rate) { MSG_("\n<SetParameters>\n"); VideoManager::instance->captureManager()->activeDevice->SetDeviceProperties( Utils::toPlatformString(format),width,height,rate); @@ -392,7 +422,7 @@ RingClientUWP::RingD::startDaemon() DRing::exportable_callback<DRing::VideoSignal::StartCapture> ([&](const std::string& device) { MSG_("\n<StartCapture>\n"); - dispatcher->RunAsync(CoreDispatcherPriority::Normal, + dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { VideoManager::instance->captureManager()->InitializeCameraAsync(); VideoManager::instance->captureManager()->videoFrameCopyInvoker->Start(); @@ -401,7 +431,7 @@ RingClientUWP::RingD::startDaemon() DRing::exportable_callback<DRing::VideoSignal::StopCapture> ([&]() { MSG_("\n<StopCapture>\n"); - dispatcher->RunAsync(CoreDispatcherPriority::Normal, + dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { VideoManager::instance->captureManager()->StopPreviewAsync(); if (VideoManager::instance->captureManager()->captureTaskTokenSource) @@ -425,7 +455,7 @@ RingClientUWP::RingD::startDaemon() tasksList_.push(ref new RingD::Task(Request::AddSIPAccount)); } else { - CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, + CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { reloadAccountList(); })); @@ -487,6 +517,12 @@ RingD::dequeueTasks() case Request::CancelOutGoingCall: case Request::HangUpCall: { + + MSG_("1!--->> Request::CancelOutGoingCall"); + auto id = task->_callId; + DRing::hangUp(Utils::toString(id)); + return; + auto callId = task->_call->callId; auto callId2 = Utils::toString(callId); DRing::hangUp(callId2); diff --git a/RingD.h b/RingD.h index 06334a68891ee47518f11aa162dda90bb1ee39f1..7a22790d55566b0fcad5dbdd871598e67208097a 100644 --- a/RingD.h +++ b/RingD.h @@ -52,6 +52,9 @@ public: } } + void cancelOutGoingCall2(String^ callId); // marche + + internal: /* functions */ void startDaemon(); @@ -63,7 +66,10 @@ internal: void acceptIncommingCall(Call^ call); void placeCall(Contact^ contact); void cancelOutGoingCall(Call^ call); + /*void cancelOutGoingCall2(String^ callId);*/ // marche pas + void hangUpCall(Call^ call); + void hangUpCall2(String^ callId); /* TODO : move members */ bool hasConfig; @@ -96,9 +102,14 @@ private: request = r; _call = c; } + Task(Request r, String^ c, int i) { + request = r; + _callId = c; + } public: property Request request; property Call^ _call; + property String^ _callId; }; /* functions */ diff --git a/RingDebug.h b/RingDebug.h index 2398085ca8244bb672572f48934ecd60c150cd0c..c7cee0a615dc7a8a94e5cc3b8fa46a6531bf0f96 100644 --- a/RingDebug.h +++ b/RingDebug.h @@ -68,13 +68,13 @@ void WriteException(Exception^ ex) OutputDebugString(wStringstream.str().c_str()); } -#define MSG_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Low, \ +#define MSG_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, \ ref new DispatchedHandler([=]() { RingDebug::instance->print(cstr); })) -#define WNG_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Low, \ +#define WNG_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, \ ref new DispatchedHandler([=]() { RingDebug::instance->print(std::string(cstr), RingDebug::Type::WNG); })) -#define ERR_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Low, \ +#define ERR_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, \ ref new DispatchedHandler([=]() { RingDebug::instance->print(std::string(cstr), RingDebug::Type::ERR); })) } diff --git a/SmartPanel.xaml.cpp b/SmartPanel.xaml.cpp index e0914749937c6c5cc4bcbc0ad31617532afd077b..d1d01f5ddfab45755d334c024274e352ad3ff3eb 100644 --- a/SmartPanel.xaml.cpp +++ b/SmartPanel.xaml.cpp @@ -108,6 +108,7 @@ SmartPanel::SmartPanel() RingD::instance->calling += ref new RingClientUWP::Calling([&]( Call^ call) { + MSG_("!--->> Calling lambda from smartpanel"); auto from = call->from; auto contact = ContactsViewModel::instance->findContactByName(from); @@ -124,6 +125,7 @@ SmartPanel::SmartPanel() } call->state = CallStatus::SEARCHING; + MSG_("!--->> should be Searching"); item->_call = call; }); @@ -321,40 +323,63 @@ void RingClientUWP::Views::SmartPanel::_ringTxtBx__Click(Platform::Object^ sende void RingClientUWP::Views::SmartPanel::_rejectIncomingCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { auto button = dynamic_cast<Button^>(e->OriginalSource); - auto item = dynamic_cast<SmartPanelItem^>(button->DataContext); - auto call = item->_call; - - call->refuse(); + if (button) { + auto item = dynamic_cast<SmartPanelItem^>(button->DataContext); + if (item) { + auto call = item->_call; + if (call) + RingD::instance->refuseIncommingCall(call); + //call->refuse(); + } + } } void RingClientUWP::Views::SmartPanel::_acceptIncomingCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { auto button = dynamic_cast<Button^>(e->OriginalSource); - auto item = dynamic_cast<SmartPanelItem^>(button->DataContext); - auto call = item->_call; - - call->accept(); + if (button) { + auto item = dynamic_cast<SmartPanelItem^>(button->DataContext); + if (item) { + auto call = item->_call; + if (call) + RingD::instance->acceptIncommingCall(call); + //call->accept(); + } + } } void SmartPanel::_callContact__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { + MSG_("!--->> _callContact__Click"); auto button = dynamic_cast<Button^>(e->OriginalSource); - auto item = dynamic_cast<SmartPanelItem^>(button->DataContext); - auto contact = item->_contact; - - RingD::instance->placeCall(contact); + if (button) { + auto item = dynamic_cast<SmartPanelItem^>(button->DataContext); + if (item) { + auto contact = item->_contact; + if (contact) + RingD::instance->placeCall(contact); + } + } } void RingClientUWP::Views::SmartPanel::_cancelCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { auto button = dynamic_cast<Button^>(e->OriginalSource); - auto item = dynamic_cast<SmartPanelItem^>(button->DataContext); - auto call = item->_call; + if (button) { + auto item = dynamic_cast<SmartPanelItem^>(button->DataContext); + if (item) { + auto call = item->_call; + RingD::instance->cancelOutGoingCall2(item->_callId); - call->cancel(); + return; + if (call) + RingD::instance->cancelOutGoingCall(call); + //call->cancel(); + } + } } diff --git a/SmartPanelItem.cpp b/SmartPanelItem.cpp index d93b454f8763fd12b73397364ec3bb9c2c0466a6..35c77deebc1644b2aa8fc466397a724f4d26f634 100644 --- a/SmartPanelItem.cpp +++ b/SmartPanelItem.cpp @@ -33,6 +33,8 @@ SmartPanelItem::SmartPanelItem() { /* create an empty call to avoid the call bar */ _call = ref new Call("", "", ""); + _callId = ""; + } void @@ -40,7 +42,7 @@ SmartPanelItem::NotifyPropertyChanged(String^ propertyName) { CoreApplicationView^ view = CoreApplication::MainView; view->CoreWindow->Dispatcher->RunAsync( - CoreDispatcherPriority::Normal, + CoreDispatcherPriority::High, ref new DispatchedHandler([this, propertyName]() { PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName)); diff --git a/SmartPanelItem.h b/SmartPanelItem.h index 0803fb1061c07a712496032f812d946eb86c784c..45a7e39c9ae7ec84899e845cfbdde7a7fbd0c5f9 100644 --- a/SmartPanelItem.h +++ b/SmartPanelItem.h @@ -57,6 +57,8 @@ public: } } + property String^ _callId; + protected: void NotifyPropertyChanged(String^ propertyName); diff --git a/SmartPanelItemsViewModel.h b/SmartPanelItemsViewModel.h index 7bcdfe72f68fe1cc8d2d589f4f07f009decd3bd7..029b16541c36ec52487a3ed2be0d3e1c3878a8e4 100644 --- a/SmartPanelItemsViewModel.h +++ b/SmartPanelItemsViewModel.h @@ -73,6 +73,7 @@ private: SmartPanelItem^ currentItem_; SmartPanelItem^ oldItem_; + }; } } diff --git a/UserPreferences.cpp b/UserPreferences.cpp index c9fd121fb2b1a0f5c7b3b718d02ab9ce33e0454e..96d3afdd593ea1785b860c6e820fc71cd65b2cf5 100644 --- a/UserPreferences.cpp +++ b/UserPreferences.cpp @@ -50,7 +50,7 @@ UserPreferences::load() String^ fileContents = Utils::toPlatformString(Utils::getStringFromFile(Utils::toString(preferencesFile))); - CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, + CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { if (fileContents != nullptr) { Destringify(fileContents); diff --git a/VideoPage.xaml.cpp b/VideoPage.xaml.cpp index ee44f937e1374efa74267b66b9afbe31fddbbbd6..657d1c1feb837e8d045fb6140823639371b8407a 100644 --- a/VideoPage.xaml.cpp +++ b/VideoPage.xaml.cpp @@ -61,14 +61,14 @@ VideoPage::VideoPage() VideoManager::instance->rendererManager()->writeVideoFrame += ref new WriteVideoFrame([this](String^ id, uint8_t* buf, int width, int height) { - CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, + CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { try { if (!VideoManager::instance->rendererManager()->renderers->Size) return; VideoManager::instance->rendererManager()->renderer(id)->isRendering = true; create_task(WriteFrameAsSoftwareBitmapAsync(id, buf, width, height)) - .then([=](task<void> previousTask) { + .then([=](task<void> previousTask) { try { previousTask.get(); } @@ -88,8 +88,8 @@ VideoPage::VideoPage() { PreviewImage->Visibility = Windows::UI::Xaml::Visibility::Visible; PreviewImage->FlowDirection = VideoManager::instance->captureManager()->mirroringPreview ? - Windows::UI::Xaml::FlowDirection::RightToLeft : - Windows::UI::Xaml::FlowDirection::LeftToRight; + Windows::UI::Xaml::FlowDirection::RightToLeft : + Windows::UI::Xaml::FlowDirection::LeftToRight; }); VideoManager::instance->captureManager()->stopPreviewing += @@ -205,8 +205,15 @@ void RingClientUWP::Views::VideoPage::_btnHangUp__Tapped(Platform::Object^ sende auto item = SmartPanelItemsViewModel::instance->_selectedItem; auto call = item->_call; - if (call) - RingD::instance->hangUpCall(call); + /*if (call) + RingD::instance->hangUpCall(call);*/ + + if (item->_callId != "") { + MSG_("$1 item->callid != vide "); + RingD::instance->hangUpCall2(item->_callId); + item->_callId = ""; + } + pressHangUpCall(); } @@ -325,7 +332,7 @@ VideoPage::WriteFrameAsSoftwareBitmapAsync(String^ id, uint8_t* buf, int width, auto sbSource = ref new Media::Imaging::SoftwareBitmapSource(); return create_task(sbSource->SetBitmapAsync(frame)) - .then([this, sbSource]() + .then([this, sbSource]() { try { IncomingVideoImage->Source = sbSource; diff --git a/Wizard.xaml.cpp b/Wizard.xaml.cpp index b706b592890201a52755cbddbb81259a14b4d656..13c95565b0225e0ce5a447076210767f3c0f08b8 100644 --- a/Wizard.xaml.cpp +++ b/Wizard.xaml.cpp @@ -38,7 +38,7 @@ Wizard::_createAccountYes__Click(Object^ sender, RoutedEventArgs^ e) std::string str(wstr.begin(), wstr.end()); RingD::instance->hasConfig = false; RingD::instance->accountName = std::string(wstr.begin(), wstr.end()); - this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this] () { + this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([this] () { this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(RingClientUWP::MainPage::typeid)); })); } diff --git a/pch.h b/pch.h index 7a002b4f5f9419dc47c34fbc2ce5df6c7cadf579..20d873b3df7cb9eba02f6011d0d8a29c7e41e11e 100644 --- a/pch.h +++ b/pch.h @@ -26,6 +26,7 @@ #include <sstream> #include <string> + /* required by generated headers. */ #include "App.xaml.h" #include "Account.h"