diff -rud nvidia-settings-1.0/src/gtk+-2.x/ctkui.c nvidia-settings-1.0-work/src/gtk+-2.x/ctkui.c --- nvidia-settings-1.0/src/gtk+-2.x/ctkui.c 2005-02-25 12:37:12.000000000 -0500 +++ nvidia-settings-1.0-work/src/gtk+-2.x/ctkui.c 2005-05-27 19:46:20.000000000 -0400 @@ -37,6 +37,11 @@ gtk_init(argc, argv); } +gboolean ctk_init_check(int *argc, char **argv[]) +{ + return gtk_init_check(argc, argv); +} + char *ctk_get_display(void) { return gdk_get_display(); diff -rud nvidia-settings-1.0/src/gtk+-2.x/ctkui.h nvidia-settings-1.0-work/src/gtk+-2.x/ctkui.h --- nvidia-settings-1.0/src/gtk+-2.x/ctkui.h 2005-02-25 12:37:13.000000000 -0500 +++ nvidia-settings-1.0-work/src/gtk+-2.x/ctkui.h 2005-05-27 21:40:54.000000000 -0400 @@ -28,9 +28,12 @@ #include "NvCtrlAttributes.h" #include "parse.h" #include "config-file.h" +#include void ctk_init(int *argc, char **argv[]); +gboolean ctk_init_check(int *argc, char **argv[]); + char *ctk_get_display(void); void ctk_main(NvCtrlAttributeHandle **, int, ParsedAttribute*, diff -rud nvidia-settings-1.0/src/nvidia-settings.c nvidia-settings-1.0-work/src/nvidia-settings.c --- nvidia-settings-1.0/src/nvidia-settings.c 2005-02-25 12:37:12.000000000 -0500 +++ nvidia-settings-1.0-work/src/nvidia-settings.c 2005-05-27 21:32:49.000000000 -0400 @@ -22,6 +22,8 @@ * */ +#include + #include "NvCtrlAttributes.h" #include "command-line.h" @@ -41,6 +43,8 @@ CtrlHandles *h; Options *op; int ret; + char *dpy = NULL; + int gui = 0; /* * initialize the ui @@ -49,14 +53,21 @@ * may not even use the gui, but we want the toolkit to have a * chance to parse the commandline before we do... we should * investigate gtk_init_check(). + * + * gui flag used to decide if gtk should be used or not, as + * use might just use control the display from a remote console + * but for some reason cannot initialize the gtk gui. - TY 2005-05-27 */ - ctk_init(&argc, &argv); + + if (ctk_init_check(&argc, &argv) == TRUE) { + dpy = ctk_get_display(); + gui = 1; + } /* parse the commandline */ - op = parse_command_line(argc, argv, ctk_get_display()); - + op = parse_command_line(argc, argv, dpy); /* process any query or assignment commandline options */ if (op->num_assignments || op->num_queries) { @@ -64,6 +75,14 @@ return ret ? 0 : 1; } + /* quit here if display is undefineds - TY 2005-05-27 */ + + if (op->ctrl_display == NULL) { + nv_error_msg("Display is undefined, please run `%s --help` " + "for usage information.\n", argv[0]); + return 1; + } + /* initialize the parsed attribute list */ p = nv_parsed_attribute_init(); @@ -90,6 +109,14 @@ } /* pass control to the gui */ + /* + * if gtk wasn't initiated, exit here. + * Using a -c flag without gtk would behave as if using -l - TY 2005-05-27 + */ + if (gui == 0) { + nv_error_msg("Unable to create gui.\n"); + return 1; + } ctk_main(h->h, h->num_screens, p, &conf);