internal: manage reinitialisation of video on visibility change
- adds stopping video capture stream when application goes "invisible"
- adds reinitialisation of video capture stream when application
becomes "visible"
- adds functions for pausing the call (Not yet implemented)
Change-Id: I58a24718b47d9edcc9b39ff707e0fbb695dc48f6
Tuleap: #1212
diff --git a/MainPage.xaml.cpp b/MainPage.xaml.cpp
index 666c07c..96ab011 100644
--- a/MainPage.xaml.cpp
+++ b/MainPage.xaml.cpp
@@ -295,11 +295,44 @@
{
if (e->Visible) {
WriteLine("->Visible");
- //Video::VideoManager::instance->
+ auto isPreviewing = Video::VideoManager::instance->captureManager()->isPreviewing;
+ bool isInCall = false;
+ for (auto item : SmartPanelItemsViewModel::instance->itemsList) {
+ if (item->_callId && item->_callStatus == CallStatus::IN_PROGRESS) {
+ isInCall = true;
+ break;
+ }
+ }
+ if (isInCall) {
+ /*if (RingD::instance->currentCallId)
+ RingD::instance->unPauseCall(RingD::instance->currentCallId);*/
+ Video::VideoManager::instance->captureManager()->InitializeCameraAsync();
+ Video::VideoManager::instance->captureManager()->videoFrameCopyInvoker->Start();
+ }
}
else {
WriteLine("->Invisible");
- //Video::VideoManager::instance->captureManager()->CleanupCameraAsync();
+ auto isPreviewing = Video::VideoManager::instance->captureManager()->isPreviewing;
+ bool isInCall = false;
+ for (auto item : SmartPanelItemsViewModel::instance->itemsList) {
+ if (item->_callId && item->_callStatus == CallStatus::IN_PROGRESS) {
+ isInCall = true;
+ RingD::instance->currentCallId = item->_callId;
+ break;
+ }
+ }
+ if (isInCall) {
+ /*if (RingD::instance->currentCallId) {
+ WriteLine("Pausing call: " + RingD::instance->currentCallId);
+ RingD::instance->pauseCall(RingD::instance->currentCallId);
+ }*/
+ if (isPreviewing) {
+ Video::VideoManager::instance->captureManager()->StopPreviewAsync();
+ if (Video::VideoManager::instance->captureManager()->captureTaskTokenSource)
+ Video::VideoManager::instance->captureManager()->captureTaskTokenSource->cancel();
+ Video::VideoManager::instance->captureManager()->videoFrameCopyInvoker->Stop();
+ }
+ }
}
}
@@ -347,11 +380,7 @@
Video::VideoManager::instance->captureManager()->CleanupCameraAsync()
.then([](){
WriteLine("Hang up calls...");
- for (auto item : SmartPanelItemsViewModel::instance->itemsList) {
- if (item->_callId && item->_callStatus != CallStatus::NONE) {
- DRing::hangUp(Utils::toString(item->_callId));
- }
- }
+ DRing::fini();
});
break;