bool ScreenManagerParent::RecvScreenForBrowser(PBrowserParent* aBrowser, ScreenDetails* aRetVal, bool* aSuccess) { *aSuccess = false; // Find the mWidget associated with the tabparent, and then return // the nsIScreen it's on. TabParent* tabParent = static_cast<TabParent*>(aBrowser); nsCOMPtr<nsIWidget> widget = tabParent->GetWidget(); if (!widget) { return true; } nsCOMPtr<nsIScreen> screen; if (widget->GetNativeData(NS_NATIVE_WINDOW)) { mScreenMgr->ScreenForNativeWidget(widget->GetNativeData(NS_NATIVE_WINDOW), getter_AddRefs(screen)); } NS_ENSURE_TRUE(screen, true); ScreenDetails details; if (!ExtractScreenDetails(screen, details)) { return true; } *aRetVal = details; *aSuccess = true; return true; }
bool ScreenManagerParent::RecvScreenForBrowser(PBrowserParent* aBrowser, ScreenDetails* aRetVal, bool* aSuccess) { *aSuccess = false; #ifdef MOZ_VALGRIND // Zero this so that Valgrind doesn't complain when we send it to another // process. memset(aRetVal, 0, sizeof(ScreenDetails)); #endif // Find the mWidget associated with the tabparent, and then return // the nsIScreen it's on. TabParent* tabParent = static_cast<TabParent*>(aBrowser); nsCOMPtr<nsIWidget> widget = tabParent->GetWidget(); nsCOMPtr<nsIScreen> screen; if (widget) { if (widget->GetNativeData(NS_NATIVE_WINDOW)) { mScreenMgr->ScreenForNativeWidget(widget->GetNativeData(NS_NATIVE_WINDOW), getter_AddRefs(screen)); } } else { nsresult rv = mScreenMgr->GetPrimaryScreen(getter_AddRefs(screen)); if (NS_WARN_IF(NS_FAILED(rv))) { return true; } } NS_ENSURE_TRUE(screen, true); ScreenDetails details; if (!ExtractScreenDetails(screen, details)) { return true; } *aRetVal = details; *aSuccess = true; return true; }