summaryrefslogtreecommitdiff
path: root/modules/computer/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/computer/display.c')
-rw-r--r--modules/computer/display.c83
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);