diff options
author | Perberos <[email protected]> | 2011-11-04 22:16:15 -0300 |
---|---|---|
committer | Perberos <[email protected]> | 2011-11-04 22:16:15 -0300 |
commit | fff4ecc82f2bcfa7427596e7ad9c3769fcab040b (patch) | |
tree | ac4f1812a7991609c9c32c776daede2d8492f7b5 /src/mate-screensaver.c | |
download | mate-screensaver-fff4ecc82f2bcfa7427596e7ad9c3769fcab040b.tar.bz2 mate-screensaver-fff4ecc82f2bcfa7427596e7ad9c3769fcab040b.tar.xz |
first commit
Diffstat (limited to 'src/mate-screensaver.c')
-rw-r--r-- | src/mate-screensaver.c | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/src/mate-screensaver.c b/src/mate-screensaver.c new file mode 100644 index 0000000..1e76fe6 --- /dev/null +++ b/src/mate-screensaver.c @@ -0,0 +1,132 @@ +/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- + * + * Copyright (C) 2004-2006 William Jon McCann <[email protected]> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Authors: William Jon McCann <[email protected]> + * + */ + +#include "config.h" +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/wait.h> + +#include <glib/gi18n.h> +#include <gtk/gtk.h> + +#include "mate-screensaver.h" +#include "gs-monitor.h" +#include "gs-debug.h" + +void +mate_screensaver_quit (void) +{ + gtk_main_quit (); +} + +int +main (int argc, + char **argv) +{ + GSMonitor *monitor; + GError *error = NULL; + static gboolean show_version = FALSE; + static gboolean no_daemon = FALSE; + static gboolean debug = FALSE; + static GOptionEntry entries [] = + { + { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL }, + { "no-daemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Don't become a daemon"), NULL }, + { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL }, + { NULL } + }; + +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR); +# ifdef HAVE_BIND_TEXTDOMAIN_CODESET + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); +# endif + textdomain (GETTEXT_PACKAGE); +#endif + + if (! gtk_init_with_args (&argc, &argv, NULL, entries, NULL, &error)) + { + if (error) + { + g_warning ("%s", error->message); + g_error_free (error); + } + else + { + g_warning ("Unable to initialize GTK+"); + } + exit (1); + } + + if (show_version) + { + g_print ("%s %s\n", argv [0], VERSION); + exit (1); + } + + /* debug to a file if in deamon mode */ + gs_debug_init (debug, ! no_daemon); + gs_debug ("initializing mate-screensaver %s", VERSION); + + monitor = gs_monitor_new (); + + if (monitor == NULL) + { + exit (1); + } + + error = NULL; + if (! gs_monitor_start (monitor, &error)) + { + if (error) + { + g_warning ("%s", error->message); + g_error_free (error); + } + else + { + g_warning ("Unable to start screensaver"); + } + exit (1); + } + + /* Don't close stdout and stderr for now */ + if (! no_daemon && daemon (0, 1)) + { + g_error ("Could not daemonize: %s", g_strerror (errno)); + } + + gtk_main (); + + g_object_unref (monitor); + + gs_debug ("mate-screensaver finished"); + + gs_debug_shutdown (); + + return 0; +} |