From 25c66c11e2fc83ef221e4bbc910d0b986efca0c3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 15 Dec 2010 08:06:44 -0500 Subject: [PATCH] Remove gdk_spawn functions These functions were trivial g_spawn wrappers in all backends except for X11, and they can be easily replaced by g_app_info_create_for_commandline + GdkAppLaunchContext. --- docs/reference/gdk/gdk3-sections.txt | 4 - gdk/Makefile.am | 2 - gdk/gdk.c | 3 +- gdk/gdk.h | 1 - gdk/gdk.symbols | 3 - gdk/gdkspawn.h | 62 -------- gdk/x11/Makefile.am | 1 - gdk/x11/gdkspawn-x11.c | 214 --------------------------- gtk/gtkprintoperation-unix.c | 6 +- 9 files changed, 4 insertions(+), 292 deletions(-) delete mode 100644 gdk/gdkspawn.h delete mode 100644 gdk/x11/gdkspawn-x11.c diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt index 02a3608ca0..dc5db53d30 100644 --- a/docs/reference/gdk/gdk3-sections.txt +++ b/docs/reference/gdk/gdk3-sections.txt @@ -217,10 +217,6 @@ gdk_screen_get_resolution gdk_screen_set_resolution gdk_screen_get_active_window gdk_screen_get_window_stack - -gdk_spawn_on_screen -gdk_spawn_on_screen_with_pipes -gdk_spawn_command_line_on_screen GDK_SCREEN diff --git a/gdk/Makefile.am b/gdk/Makefile.am index 2545e29ff4..0e980493fe 100644 --- a/gdk/Makefile.am +++ b/gdk/Makefile.am @@ -84,7 +84,6 @@ gdk_public_h_sources = \ gdkrgba.h \ gdkscreen.h \ gdkselection.h \ - gdkspawn.h \ gdktestutils.h \ gdkthreads.h \ gdktypes.h \ @@ -210,7 +209,6 @@ x11_introspection_files = \ x11/gdkscreen-x11.c \ x11/gdkselection-x11.c \ x11/gdksettings.c \ - x11/gdkspawn-x11.c \ x11/gdktestutils-x11.c \ x11/gdkvisual-x11.c \ x11/gdkwindow-x11.c \ diff --git a/gdk/gdk.c b/gdk/gdk.c index 5ca6326fa9..7af9134309 100644 --- a/gdk/gdk.c +++ b/gdk/gdk.c @@ -218,8 +218,7 @@ gdk_pre_parse_libgtk_only (void) if (getenv ("GDK_NATIVE_WINDOWS")) { _gdk_native_windows = TRUE; - /* Ensure that this is not propagated - to spawned applications */ + /* Ensure that this is not propagated to spawned applications */ g_unsetenv ("GDK_NATIVE_WINDOWS"); } diff --git a/gdk/gdk.h b/gdk/gdk.h index 938961e35f..2b849695d6 100644 --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -51,7 +51,6 @@ #include #include #include -#include #include #include #include diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols index ac826df829..cf8c2a1d78 100644 --- a/gdk/gdk.symbols +++ b/gdk/gdk.symbols @@ -324,9 +324,6 @@ gdk_set_program_class gdk_set_show_events gdk_setting_action_get_type G_GNUC_CONST gdk_setting_get -gdk_spawn_command_line_on_screen -gdk_spawn_on_screen -gdk_spawn_on_screen_with_pipes gdk_status_get_type G_GNUC_CONST gdk_string_to_compound_text gdk_string_to_compound_text_for_display diff --git a/gdk/gdkspawn.h b/gdk/gdkspawn.h deleted file mode 100644 index cb7a2eac16..0000000000 --- a/gdk/gdkspawn.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2003 Sun Microsystems Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Authors: Mark McLoughlin - */ - -#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION) -#error "Only can be included directly." -#endif - -#ifndef __GDK_SPAWN_H__ -#define __GDK_SPAWN_H__ - -#include - -G_BEGIN_DECLS - -gboolean gdk_spawn_on_screen (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - GError **error); - -gboolean gdk_spawn_on_screen_with_pipes (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - gint *standard_input, - gint *standard_output, - gint *standard_error, - GError **error); - -gboolean gdk_spawn_command_line_on_screen (GdkScreen *screen, - const gchar *command_line, - GError **error); - -G_END_DECLS - -#endif /* __GDK_SPAWN_H__ */ diff --git a/gdk/x11/Makefile.am b/gdk/x11/Makefile.am index 6c07ff4aed..d05a03355c 100644 --- a/gdk/x11/Makefile.am +++ b/gdk/x11/Makefile.am @@ -44,7 +44,6 @@ libgdk_x11_la_SOURCES = \ gdkscreen-x11.c \ gdkscreen-x11.h \ gdkselection-x11.c \ - gdkspawn-x11.c \ gdktestutils-x11.c \ gdkvisual-x11.c \ gdkwindow-x11.c \ diff --git a/gdk/x11/gdkspawn-x11.c b/gdk/x11/gdkspawn-x11.c deleted file mode 100644 index 7f97b4e4f0..0000000000 --- a/gdk/x11/gdkspawn-x11.c +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (C) 2003 Sun Microsystems Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Authors: Mark McLoughlin - */ - -#include "config.h" - -#include "gdkspawn.h" - -#include -#include -#include - - -typedef struct { - char *display; - GSpawnChildSetupFunc child_setup; - gpointer user_data; -} UserChildSetup; - -/* - * Set the DISPLAY variable, and then call the user-specified child setup - * function. This is required so that applications can use gdk_spawn_* and - * call putenv() in their child_setup functions. - */ -static void -set_environment (gpointer user_data) -{ - UserChildSetup *setup = user_data; - - g_setenv ("DISPLAY", setup->display, TRUE); - - if (setup->child_setup) - setup->child_setup (setup->user_data); -} - -/** - * gdk_spawn_on_screen: - * @screen: a #GdkScreen - * @working_directory: child's current working directory, or %NULL to - * inherit parent's - * @argv: child's argument vector - * @envp: child's environment, or %NULL to inherit parent's - * @flags: flags from #GSpawnFlags - * @child_setup: function to run in the child just before exec() - * @user_data: user data for @child_setup - * @child_pid: return location for child process ID, or %NULL - * @error: return location for error - * - * Like g_spawn_async(), except the child process is spawned in such - * an environment that on calling gdk_display_open() it would be - * returned a #GdkDisplay with @screen as the default screen. - * - * This is useful for applications which wish to launch an application - * on a specific screen. - * - * Return value: %TRUE on success, %FALSE if error is set - * - * Since: 2.4 - **/ -gboolean -gdk_spawn_on_screen (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - GError **error) -{ - UserChildSetup setup_data; - - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - - setup_data.display = gdk_screen_make_display_name (screen); - setup_data.child_setup = child_setup; - setup_data.user_data = user_data; - - return g_spawn_async (working_directory, - argv, - envp, - flags, - set_environment, - &setup_data, - child_pid, - error); -} - -/** - * gdk_spawn_on_screen_with_pipes: - * @screen: a #GdkScreen - * @working_directory: child's current working directory, or %NULL to - * inherit parent's - * @argv: child's argument vector - * @envp: child's environment, or %NULL to inherit parent's - * @flags: flags from #GSpawnFlags - * @child_setup: function to run in the child just before exec() - * @user_data: user data for @child_setup - * @child_pid: return location for child process ID, or %NULL - * @standard_input: return location for file descriptor to write to - * child's stdin, or %NULL - * @standard_output: return location for file descriptor to read child's - * stdout, or %NULL - * @standard_error: return location for file descriptor to read child's - * stderr, or %NULL - * @error: return location for error - * - * Like g_spawn_async_with_pipes(), except the child process is - * spawned in such an environment that on calling gdk_display_open() - * it would be returned a #GdkDisplay with @screen as the default - * screen. - * - * This is useful for applications which wish to launch an application - * on a specific screen. - * - * Return value: %TRUE on success, %FALSE if an error was set - * - * Since: 2.4 - **/ -gboolean -gdk_spawn_on_screen_with_pipes (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - gint *standard_input, - gint *standard_output, - gint *standard_error, - GError **error) -{ - UserChildSetup setup_data; - - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - - setup_data.display = gdk_screen_make_display_name (screen); - setup_data.child_setup = child_setup; - setup_data.user_data = user_data; - - return g_spawn_async_with_pipes (working_directory, - argv, - envp, - flags, - set_environment, - &setup_data, - child_pid, - standard_input, - standard_output, - standard_error, - error); - -} - -/** - * gdk_spawn_command_line_on_screen: - * @screen: a #GdkScreen - * @command_line: a command line - * @error: return location for errors - * - * Like g_spawn_command_line_async(), except the child process is - * spawned in such an environment that on calling gdk_display_open() - * it would be returned a #GdkDisplay with @screen as the default - * screen. - * - * This is useful for applications which wish to launch an application - * on a specific screen. - * - * Return value: %TRUE on success, %FALSE if error is set. - * - * Since: 2.4 - **/ -gboolean -gdk_spawn_command_line_on_screen (GdkScreen *screen, - const gchar *command_line, - GError **error) -{ - gchar **argv = NULL; - gboolean retval; - - g_return_val_if_fail (command_line != NULL, FALSE); - - if (!g_shell_parse_argv (command_line, - NULL, &argv, - error)) - return FALSE; - - retval = gdk_spawn_on_screen (screen, - NULL, argv, NULL, - G_SPAWN_SEARCH_PATH, - NULL, NULL, NULL, - error); - g_strfreev (argv); - - return retval; -} diff --git a/gtk/gtkprintoperation-unix.c b/gtk/gtkprintoperation-unix.c index 1e3643002b..2431371f0c 100644 --- a/gtk/gtkprintoperation-unix.c +++ b/gtk/gtkprintoperation-unix.c @@ -202,7 +202,7 @@ _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, const gchar *filename) { GAppInfo *appinfo; - GAppLaunchContext *context; + GdkAppLaunchContext *context; gchar *cmd; gchar *preview_cmd; GtkSettings *settings; @@ -291,8 +291,8 @@ _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, goto out; context = gdk_display_get_app_launch_context (gdk_screen_get_display (screen)); - gdk_app_launch_context_set_screen (GDK_APP_LAUNCH_CONTEXT (context), screen); - g_app_info_launch (appinfo, NULL, context, &error); + gdk_app_launch_context_set_screen (context, screen); + g_app_info_launch (appinfo, NULL, G_APP_LAUNCH_CONTEXT (context), &error); g_object_unref (context); g_object_unref (appinfo);