summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuha Kukkonen <ext-juha.kukkonen@nokia.com>2012-08-14 12:48:56 +0300
committerJuha Kukkonen <ext-juha.kukkonen@nokia.com>2012-08-15 08:17:33 +0300
commit51aae69e7a25c32604bc5b02813f08d9f109a3eb (patch)
tree428e20cbf0aae8e9bb3573c68248e9c7c3ab13c3
parent7255851bf5e4142d447a5cbac3c89acf30f0898b (diff)
Fix QML video app freeze on Symbian
If EGL context gets destroyed before eglEndpointCancelNotificationNOK call then pending request is not completed. EGL context may get destroyed too early e.g. in background/key lock/task switch/app exit cases. Proper fix would require changes to platform side or adding sync between Qt and Mobility when EGL context is destroyed. Added workaround to Mobility side to complete pending request if eglEndpointCancelNotificationNOK does not complete request. Task-number: ou1cimx1#1010331
-rw-r--r--plugins/multimedia/symbian/videooutput/s60eglendpoint.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/plugins/multimedia/symbian/videooutput/s60eglendpoint.cpp b/plugins/multimedia/symbian/videooutput/s60eglendpoint.cpp
index 7a5f010f53..63b796d38f 100644
--- a/plugins/multimedia/symbian/videooutput/s60eglendpoint.cpp
+++ b/plugins/multimedia/symbian/videooutput/s60eglendpoint.cpp
@@ -115,6 +115,14 @@ void S60EglEndpointEventHandler::DoCancel()
TRACE("S60EglEndpointEventHandler::DoCancel" << qtThisPtr());
m_parent->m_extensions->endpointCancelNotification(m_parent->m_display,
m_parent->m_endpoint);
+
+ if (iStatus == KRequestPending) {
+ // If EGL display gets destroyed before cancel then endpointCancelNotification
+ // will not cancel our request
+ TRACE("S60EglEndpointEventHandler::DoCancel - completing request locally" << qtThisPtr());
+ TRequestStatus *requestStatus = &iStatus;
+ User::RequestComplete(requestStatus, KErrCancel);
+ }
}
//-----------------------------------------------------------------------------