diff options
author | Juha Kukkonen <ext-juha.kukkonen@nokia.com> | 2012-08-14 12:48:56 +0300 |
---|---|---|
committer | Juha Kukkonen <ext-juha.kukkonen@nokia.com> | 2012-08-15 08:17:33 +0300 |
commit | 51aae69e7a25c32604bc5b02813f08d9f109a3eb (patch) | |
tree | 428e20cbf0aae8e9bb3573c68248e9c7c3ab13c3 | |
parent | 7255851bf5e4142d447a5cbac3c89acf30f0898b (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.cpp | 8 |
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); + } } //----------------------------------------------------------------------------- |