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 192293 19554eb3bed1
parent 192292 68b0fb01bfdc
child 192294 792de35e26c0
push id3559
push userryanvm@gmail.com
push date2014-05-15 13:07 +0000
Treeherderresults
reviewersjimm, sledru
bugs1000364
milestone30.0
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__")) {