Bug 1000364 - Drop nonqueued messages for QuickTime's QTNSHIDDEN class. r=jimm, a=sledru
authorDavid Major <dmajor@mozilla.com>
Thu, 08 May 2014 12:20:05 +1200
changeset 199202 427bf5146c02575cdc6b131c695b540b8abda943
parent 199201 82afd28ed7cb564cb2dc7e945ba19dc13491d8b7
child 199203 326458a1a95bdc02383c68178bbe780deba406dd
push id3624
push userasasaki@mozilla.com
push dateMon, 09 Jun 2014 21:49:01 +0000
treeherdermozilla-beta@b1a5da15899a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjimm, sledru
bugs1000364
milestone31.0a2
Bug 1000364 - Drop nonqueued messages for QuickTime's QTNSHIDDEN class. r=jimm, a=sledru
ipc/glue/WindowsMessageLoop.cpp
--- a/ipc/glue/WindowsMessageLoop.cpp
+++ b/ipc/glue/WindowsMessageLoop.cpp
@@ -275,16 +275,21 @@ ProcessOrDeferMessage(HWND hwnd,
     }
 
     // Just return, prevents DefWindowProc from messaging the window
     // syncronously with other events, which may be deferred. Prevents 
     // random shutdown of aero composition on the window. 
     case WM_SYNCPAINT:
       return 0;
 
+    // This message causes QuickTime to make re-entrant calls.
+    // Simply discarding it doesn't seem to hurt anything.
+    case WM_APP-1:
+      return 0;
+
     default: {
       if (uMsg && uMsg == mozilla::widget::sAppShellGeckoMsgId) {
         // Widget's registered native event callback
         deferred = new DeferredSendMessage(hwnd, uMsg, wParam, lParam);
 #ifdef MOZ_METRO
       } else if (uMsg && uMsg == mozilla::widget::sDefaultBrowserMsgId) {
         // Metro widget's system shutdown message
         deferred = new DeferredSendMessage(hwnd, uMsg, wParam, lParam);
@@ -385,18 +390,20 @@ WindowIsDeferredWindow(HWND hWnd)
   // immersive UI ICoreWindow
   if (className.EqualsLiteral("Windows.UI.Core.CoreWindow")) {
     return true;
   }
 #endif
 
   // Plugin windows that can trigger ipc calls in child:
   // 'ShockwaveFlashFullScreen' - flash fullscreen window
+  // 'QTNSHIDDEN' - QuickTime
   // 'AGFullScreenWinClass' - silverlight fullscreen window
   if (className.EqualsLiteral("ShockwaveFlashFullScreen") ||
+      className.EqualsLiteral("QTNSHIDDEN") ||
       className.EqualsLiteral("AGFullScreenWinClass")) {
     return true;
   }
 
   // Google Earth bridging msg window between the plugin instance and a separate
   // earth process. The earth process can trigger a plugin incall on the browser
   // at any time, which is badness if the instance is already making an incall.
   if (className.EqualsLiteral("__geplugin_bridge_window__")) {