Commit daa82e9d authored by Timothy Nikkel's avatar Timothy Nikkel
Browse files

Bug 445765. In GTK screen manager, for the common case of just one screen...

Bug 445765. In GTK screen manager, for the common case of just one screen don't make potentially expensive system calls to try to determine which screen we are on.  r=dbaron
parent 32d07c5c
Loading
Loading
Loading
Loading
+22 −9
Original line number Diff line number Diff line
@@ -342,6 +342,14 @@ nsScreenManagerGtk :: GetNumberOfScreens(PRUint32 *aNumberOfScreens)
NS_IMETHODIMP
nsScreenManagerGtk :: ScreenForNativeWidget (void *aWidget, nsIScreen **outScreen)
{
  nsresult rv;
  rv = EnsureInit();
  if (NS_FAILED(rv)) {
    NS_ERROR("nsScreenManagerGtk::EnsureInit() failed from ScreenForNativeWidget\n");
    return rv;
  }

  if (mCachedScreenArray.Count() > 1) {
    // I don't know how to go from GtkWindow to nsIScreen, especially
    // given xinerama and stuff, so let's just do this
    gint x, y, width, height, depth;
@@ -350,5 +358,10 @@ nsScreenManagerGtk :: ScreenForNativeWidget (void *aWidget, nsIScreen **outScree
    gdk_window_get_geometry(GDK_WINDOW(aWidget), &x, &y, &width, &height,
                            &depth);
    gdk_window_get_origin(GDK_WINDOW(aWidget), &x, &y);
  return ScreenForRect(x, y, width, height, outScreen);
    rv = ScreenForRect(x, y, width, height, outScreen);
  } else {
    rv = GetPrimaryScreen(outScreen);
  }

  return rv;
}