diff options
Diffstat (limited to 'modules/computer/display.c')
-rw-r--r-- | modules/computer/display.c | 83 |
1 files changed, 43 insertions, 40 deletions
diff --git a/modules/computer/display.c b/modules/computer/display.c index 2c98b144..61eac4eb 100644 --- a/modules/computer/display.c +++ b/modules/computer/display.c @@ -26,38 +26,39 @@ get_glx_info(DisplayInfo *di) { gchar *output; if (g_spawn_command_line_sync("glxinfo", &output, NULL, NULL, NULL)) { - gchar **output_lines; - gint i = 0; + gchar **output_lines; + gint i = 0; - for (output_lines = g_strsplit(output, "\n", 0); - output_lines && output_lines[i]; - i++) { - if (strstr(output_lines[i], "OpenGL")) { - gchar **tmp = g_strsplit(output_lines[i], ":", 0); + for (output_lines = g_strsplit(output, "\n", 0); + output_lines && output_lines[i]; + i++) { + if (strstr(output_lines[i], "OpenGL")) { + gchar **tmp = g_strsplit(output_lines[i], ":", 0); - tmp[1] = g_strchug(tmp[1]); + tmp[1] = g_strchug(tmp[1]); - get_str("OpenGL vendor str", di->ogl_vendor); - get_str("OpenGL renderer str", di->ogl_renderer); - get_str("OpenGL version str", di->ogl_version); + get_str("OpenGL vendor str", di->ogl_vendor); + get_str("OpenGL renderer str", di->ogl_renderer); + get_str("OpenGL version str", di->ogl_version); - g_strfreev(tmp); - } else if (strstr(output_lines[i], "direct rendering: Yes")) { - di->dri = TRUE; - } - } + g_strfreev(tmp); + } else if (strstr(output_lines[i], "direct rendering: Yes")) { + di->dri = TRUE; + } + } + + g_free(output); + g_strfreev(output_lines); + + if (!di->ogl_vendor) + di->ogl_vendor = _("(Unknown)"); + if (!di->ogl_renderer) + di->ogl_renderer = _("(Unknown)"); + if (!di->ogl_version) + di->ogl_version = _("(Unknown)"); - g_free(output); - g_strfreev(output_lines); - - if (!di->ogl_vendor) - di->ogl_vendor = "Unknown"; - if (!di->ogl_renderer) - di->ogl_renderer = "Unknown"; - if (!di->ogl_version) - di->ogl_version = "Unknown"; } else { - di->ogl_vendor = di->ogl_renderer = di->ogl_version = "Unknown"; + di->ogl_vendor = di->ogl_renderer = di->ogl_version = _("(Unknown)"); } } @@ -66,7 +67,7 @@ static void get_x11_info(DisplayInfo *di) { gchar *output; - + if (g_spawn_command_line_sync("xdpyinfo", &output, NULL, NULL, NULL)) { gchar **output_lines, **old; @@ -74,8 +75,9 @@ get_x11_info(DisplayInfo *di) g_free(output); old = output_lines; - while (*(output_lines++)) { - gchar **tmp = g_strsplit(*output_lines, ":", 0); + while (*output_lines) { + gchar **tmp = g_strsplit(*output_lines, ":", 2); + output_lines++; if (tmp[1] && tmp[0]) { tmp[1] = g_strchug(tmp[1]); @@ -83,20 +85,21 @@ get_x11_info(DisplayInfo *di) get_str("vendor string", di->vendor); get_str("X.Org version", di->version); get_str("XFree86 version", di->version); + get_str("name of display", di->display_name); if (g_str_has_prefix(tmp[0], "number of extensions")) { int n; - + di->extensions = g_strdup(""); - + for (n = atoi(tmp[1]); n; n--) { - di->extensions = h_strconcat(di->extensions, + di->extensions = h_strconcat(di->extensions, g_strstrip(*(++output_lines)), "=\n", NULL); } g_strfreev(tmp); - + break; } } @@ -106,19 +109,19 @@ get_x11_info(DisplayInfo *di) g_strfreev(old); } - + GdkScreen *screen = gdk_screen_get_default(); - + if (screen && GDK_IS_SCREEN(screen)) { gint n_monitors = gdk_screen_get_n_monitors(screen); gint i; - + di->monitors = NULL; for (i = 0; i < n_monitors; i++) { GdkRectangle rect; - + gdk_screen_get_monitor_geometry(screen, i, &rect); - + di->monitors = h_strdup_cprintf(_("Monitor %d=%dx%d pixels\n"), di->monitors, i, rect.width, rect.height); } @@ -131,9 +134,9 @@ DisplayInfo * computer_get_display(void) { DisplayInfo *di = g_new0(DisplayInfo, 1); - + GdkScreen *screen = gdk_screen_get_default(); - + if (screen && GDK_IS_SCREEN(screen)) { di->width = gdk_screen_get_width(screen); di->height = gdk_screen_get_height(screen); |