Changeset 30218 in webkit


Ignore:
Timestamp:
Feb 13, 2008 6:13:53 PM (16 years ago)
Author:
jhoneycutt@apple.com
Message:

2008-02-13 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Anders.

<rdar://problem/5739282> Hangs after closing video trailer popup with
VLC plugin

VLC hangs on NPP_Destroy if we call NPP_SetWindow with a null window
handle.

  • plugins/PluginQuirkSet.h: Added new quirk PluginQuirkDontSetNullWindowHandleOnDestroy. (WebCore::):
  • plugins/win/PluginViewWin.cpp: (WebCore::PluginView::stop): Selectively call NPP_SetWindow. (WebCore::PluginView::determineQuirks): Set new quirk for VLC plug-in.
Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r30215 r30218  
     12008-02-13  Jon Honeycutt  <jhoneycutt@apple.com>
     2
     3        Reviewed by Anders.
     4
     5        <rdar://problem/5739282> Hangs after closing video trailer popup with
     6        VLC plugin
     7
     8        VLC hangs on NPP_Destroy if we call NPP_SetWindow with a null window
     9        handle.
     10
     11        * plugins/PluginQuirkSet.h: Added new quirk
     12        PluginQuirkDontSetNullWindowHandleOnDestroy.
     13        (WebCore::):
     14        * plugins/win/PluginViewWin.cpp:
     15        (WebCore::PluginView::stop): Selectively call NPP_SetWindow.
     16        (WebCore::PluginView::determineQuirks): Set new quirk for VLC plug-in.
     17
    1182008-02-13  Rodney Dawes  <dobey@wayofthemonkey.com>
    219
  • trunk/WebCore/plugins/PluginQuirkSet.h

    r29974 r30218  
    4444        PluginQuirkFlashURLNotifyBug = 1 << 8,
    4545        PluginQuirkDontClipToZeroRectWhenScrolling = 1 << 9,
     46        PluginQuirkDontSetNullWindowHandleOnDestroy = 1 << 10,
    4647    };
    4748
  • trunk/WebCore/plugins/win/PluginViewWin.cpp

    r30203 r30218  
    786786    // Clear the window
    787787    m_npWindow.window = 0;
    788     if (m_plugin->pluginFuncs()->setwindow) {
     788    if (m_plugin->pluginFuncs()->setwindow && !m_quirks.contains(PluginQuirkDontSetNullWindowHandleOnDestroy)) {
    789789        setCallingPlugin(true);
    790790        m_plugin->pluginFuncs()->setwindow(m_instance, &m_npWindow);
     
    14741474    static const unsigned lastKnownUnloadableRealPlayerVersionMS = 0x00060000;
    14751475
    1476     // The flash plugin only requests windowless plugins if we return a mozilla user agent
    14771476    if (mimeType == "application/x-shockwave-flash") {
     1477        // The flash plugin only requests windowless plugins if we return a mozilla user agent
    14781478        m_quirks.add(PluginQuirkWantsMozillaUserAgent);
    14791479        m_quirks.add(PluginQuirkThrottleInvalidate);
     
    14821482    }
    14831483
    1484     // The WMP plugin sets its size on the first NPP_SetWindow call and never updates its size, so
    1485     // call SetWindow when the plugin view has a correct size
    14861484    if (m_plugin->name().contains("Microsoft") && m_plugin->name().contains("Windows Media")) {
     1485        // The WMP plugin sets its size on the first NPP_SetWindow call and never updates its size, so
     1486        // call SetWindow when the plugin view has a correct size
    14871487        m_quirks.add(PluginQuirkDeferFirstSetWindowCall);
    14881488
     
    14981498        m_quirks.add(PluginQuirkHasModalMessageLoop);
    14991499    }
     1500
     1501    // VLC hangs on NPP_Destroy if we call NPP_SetWindow with a null window handle
     1502    if (m_plugin->name() == "VLC Multimedia Plugin")
     1503        m_quirks.add(PluginQuirkDontSetNullWindowHandleOnDestroy);
    15001504
    15011505    // The DivX plugin sets its size on the first NPP_SetWindow call and never updates its size, so
Note: See TracChangeset for help on using the changeset viewer.