Bug 1000364: Drop nonqueued messages for QuickTime's QTNSHIDDEN class. r=jimm
authorDavid Major <dmajor@mozilla.com>
Thu, 08 May 2014 12:20:05 +1200
changeset 182080 321376574687c26cb891bff6c1041a4c82e65e1d
parent 182079 1b8db8e3facb9ac7bd45b4a02e766c1cf636b066
child 182081 82ad7813f515acfdc0ebbaaaa0a04f406f2cf6d0
push id26745
push usercbook@mozilla.com
push dateThu, 08 May 2014 11:47:46 +0000
treeherdermozilla-central@2915a02d24cd [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjimm
bugs1000364
milestone32.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1000364: Drop nonqueued messages for QuickTime's QTNSHIDDEN class. r=jimm
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__")) {