bool NetscapePlugin::platformPostInitialize() { if (!m_isWindowed) { m_window = 0; // Windowless plugins need a little help showing context menus since our containingWindow() // is in a different process. See <http://webkit.org/b/51063>. m_pluginModule->module()->installIATHook("user32.dll", "TrackPopupMenu", hookedTrackPopupMenu); m_contextMenuOwnerWindow = ::CreateWindowExW(0, defWndProcWindowClassName(), 0, WS_CHILD, 0, 0, 0, 0, containingWindow(), 0, instanceHandle(), 0); return true; } registerPluginView(); // Start out with the window hidden. The UI process will take care of showing it once it's correctly positioned the window. m_window = ::CreateWindowExW(0, windowClassName, 0, WS_CHILD, 0, 0, 0, 0, containingWindow(), 0, instanceHandle(), 0); if (!m_window) return false; // FIXME: Do we need to pass our window to setPlatformWidget? // FIXME: WebCore::PluginView sets the window proc to DefWindowProcA here for Shockwave Director. m_npWindow.type = NPWindowTypeWindow; m_npWindow.window = m_window; return true; }
bool CACFLayerTreeHost::acceleratedCompositingAvailable() { static bool available; static bool tested; if (tested) return available; tested = true; // Initialize available to true since this function will be called from a // propagation within createRenderer(). We want to be able to return true // when that happens so that the test can continue. available = true; HMODULE library = LoadLibrary(TEXT("d3d9.dll")); if (!library) { available = false; return available; } FreeLibrary(library); #ifdef DEBUG_ALL library = LoadLibrary(TEXT("QuartzCore_debug.dll")); #else library = LoadLibrary(TEXT("QuartzCore.dll")); #endif if (!library) { available = false; return available; } FreeLibrary(library); // Make a dummy HWND. HWND testWindow = ::CreateWindow(defWndProcWindowClassName(), L"CoreAnimationTesterWindow", WS_POPUP, -500, -500, 20, 20, 0, 0, 0, 0); if (!testWindow) { available = false; return available; } RefPtr<CACFLayerTreeHost> host = CACFLayerTreeHost::create(); host->setWindow(testWindow); available = host->createRenderer(); host->setWindow(0); ::DestroyWindow(testWindow); return available; }