[gnome-screenshot] Use g_autofree/g_autoptr to simplify code
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-screenshot] Use g_autofree/g_autoptr to simplify code
- Date: Wed, 24 Jul 2019 18:36:25 +0000 (UTC)
commit 2a6c090b27c046e48e193939a826bb5a6e889c0f
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Wed Jul 24 13:19:53 2019 +0200
Use g_autofree/g_autoptr to simplify code
src/gnome-screenshot.c | 8 +-
src/screenshot-application.c | 101 +++++++-----------------
src/screenshot-application.h | 2 +-
src/screenshot-area-selection.c | 17 +---
src/screenshot-dialog.c | 36 +++------
src/screenshot-filename-builder.c | 153 +++++++++++-------------------------
src/screenshot-interactive-dialog.c | 13 +--
src/screenshot-shadow.c | 12 +--
src/screenshot-utils.c | 42 ++++------
9 files changed, 112 insertions(+), 272 deletions(-)
---
diff --git a/src/gnome-screenshot.c b/src/gnome-screenshot.c
index 9956090..a18ac21 100644
--- a/src/gnome-screenshot.c
+++ b/src/gnome-screenshot.c
@@ -36,8 +36,7 @@
int
main (int argc, char *argv[])
{
- gint result;
- ScreenshotApplication *app;
+ g_autoptr(GApplication) app;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
@@ -45,8 +44,5 @@ main (int argc, char *argv[])
textdomain (GETTEXT_PACKAGE);
app = screenshot_application_new ();
- result = g_application_run (G_APPLICATION (app), argc, argv);
- g_object_unref (app);
-
- return result;
+ return g_application_run (app, argc, argv);
}
diff --git a/src/screenshot-application.c b/src/screenshot-application.c
index bbe2d30..92134ab 100644
--- a/src/screenshot-application.c
+++ b/src/screenshot-application.c
@@ -60,22 +60,18 @@ struct _ScreenshotApplicationPriv {
static void
save_folder_to_settings (ScreenshotApplication *self)
{
- char *folder;
-
- folder = screenshot_dialog_get_folder (self->priv->dialog);
+ g_autofree gchar *folder = screenshot_dialog_get_folder (self->priv->dialog);
g_settings_set_string (screenshot_config->settings,
LAST_SAVE_DIRECTORY_KEY, folder);
-
- g_free (folder);
}
static void
set_recent_entry (ScreenshotApplication *self)
{
- char *app_exec = NULL;
+ g_autofree gchar *app_exec = NULL;
+ g_autoptr(GAppInfo) app = NULL;
GtkRecentManager *recent;
GtkRecentData recent_data;
- GAppInfo *app;
const char *exec_name = NULL;
static char * groups[2] = { "Graphics", NULL };
@@ -100,9 +96,6 @@ set_recent_entry (ScreenshotApplication *self)
recent_data.is_private = FALSE;
gtk_recent_manager_add_full (recent, self->priv->save_uri, &recent_data);
-
- g_object_unref (app);
- g_free (app_exec);
}
static void
@@ -142,25 +135,18 @@ save_pixbuf_handle_error (ScreenshotApplication *self,
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS) &&
!self->priv->should_overwrite)
{
- gchar *folder = screenshot_dialog_get_folder (dialog);
- gchar *folder_uri = g_path_get_basename (folder);
- gchar *folder_name = g_uri_unescape_string (folder_uri, NULL);
- gchar *file_name = screenshot_dialog_get_filename (dialog);
- gchar *detail = g_strdup_printf (_("A file named “%s” already exists in “%s”"),
- file_name, folder_name);
- gint response;
-
- response = screenshot_show_dialog (GTK_WINDOW (dialog->dialog),
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_YES_NO,
- _("Overwrite existing file?"),
- detail);
-
- g_free (folder);
- g_free (folder_uri);
- g_free (folder_name);
- g_free (file_name);
- g_free (detail);
+ g_autofree gchar *folder = screenshot_dialog_get_folder (dialog);
+ g_autofree gchar *folder_uri = g_path_get_basename (folder);
+ g_autofree gchar *folder_name = g_uri_unescape_string (folder_uri, NULL);
+ g_autofree gchar *file_name = screenshot_dialog_get_filename (dialog);
+ g_autofree gchar *detail = g_strdup_printf (_("A file named “%s” already exists in “%s”"),
+ file_name, folder_name);
+
+ gint response = screenshot_show_dialog (GTK_WINDOW (dialog->dialog),
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_YES_NO,
+ _("Overwrite existing file?"),
+ detail);
if (response == GTK_RESPONSE_YES)
{
@@ -196,7 +182,7 @@ save_pixbuf_ready_cb (GObject *source,
GAsyncResult *res,
gpointer user_data)
{
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
ScreenshotApplication *self = user_data;
gdk_pixbuf_save_to_stream_finish (res, &error);
@@ -204,7 +190,6 @@ save_pixbuf_ready_cb (GObject *source,
if (error != NULL)
{
save_pixbuf_handle_error (self, error);
- g_error_free (error);
return;
}
@@ -217,29 +202,20 @@ find_out_writable_format_by_extension (gpointer data,
{
GdkPixbufFormat *format = (GdkPixbufFormat*) data;
gchar **name = (gchar **) user_data;
- gchar **extensions = gdk_pixbuf_format_get_extensions (format);
+ g_auto(GStrv) extensions = gdk_pixbuf_format_get_extensions (format);
gchar **ptr = extensions;
- gboolean found = FALSE;
while (*ptr != NULL)
{
if (g_strcmp0 (*ptr, *name) == 0 &&
gdk_pixbuf_format_is_writable (format) == TRUE)
{
+ g_free (*name);
*name = gdk_pixbuf_format_get_name (format);
- found = TRUE;
break;
}
ptr++;
}
-
- g_strfreev (extensions);
-
- /* Needing to duplicate string here because
- * gdk_pixbuf_format_get_name will return a duplicated string.
- */
- if (!found)
- *name = g_strdup (*name);
}
static gboolean
@@ -304,11 +280,11 @@ save_file_create_ready_cb (GObject *source,
gpointer user_data)
{
ScreenshotApplication *self = user_data;
- GFileOutputStream *os;
- GError *error = NULL;
- gchar *basename = g_file_get_basename (G_FILE (source));
+ g_autoptr(GFileOutputStream) os = NULL;
+ g_autoptr(GError) error = NULL;
+ g_autofree gchar *basename = g_file_get_basename (G_FILE (source));
+ g_autofree gchar *format = NULL;
gchar *extension = g_strrstr (basename, ".");
- gchar *format = NULL;
GSList *formats = NULL;
if (extension == NULL)
@@ -316,14 +292,13 @@ save_file_create_ready_cb (GObject *source,
else
extension++;
- format = extension;
+ format = g_strdup (extension);
formats = gdk_pixbuf_get_formats();
g_slist_foreach (formats,
find_out_writable_format_by_extension,
(gpointer) &format);
g_slist_free (formats);
- g_free (basename);
if (self->priv->should_overwrite)
os = g_file_replace_finish (G_FILE (source), res, &error);
@@ -333,7 +308,6 @@ save_file_create_ready_cb (GObject *source,
if (error != NULL)
{
save_pixbuf_handle_error (self, error);
- g_error_free (error);
return;
}
@@ -348,15 +322,12 @@ save_file_create_ready_cb (GObject *source,
{
save_with_no_profile_or_description (self, os, format);
}
-
- g_object_unref (os);
- g_free (format);
}
static void
screenshot_save_to_file (ScreenshotApplication *self)
{
- GFile *target_file;
+ g_autoptr(GFile) target_file = NULL;
if (self->priv->dialog != NULL)
screenshot_dialog_set_busy (self->priv->dialog, TRUE);
@@ -380,8 +351,6 @@ screenshot_save_to_file (ScreenshotApplication *self)
NULL,
save_file_create_ready_cb, self);
}
-
- g_object_unref (target_file);
}
static void
@@ -431,19 +400,13 @@ build_filename_ready_cb (GObject *source,
gpointer user_data)
{
ScreenshotApplication *self = user_data;
- GError *error = NULL;
- char *save_path;
+ g_autoptr(GError) error = NULL;
+ g_autofree gchar *save_path = screenshot_build_filename_finish (res, &error);
- save_path = screenshot_build_filename_finish (res, &error);
if (save_path != NULL)
{
- GFile *file;
-
- file = g_file_new_for_path (save_path);
- g_free (save_path);
-
+ g_autoptr(GFile) file = g_file_new_for_path (save_path);
self->priv->save_uri = g_file_get_uri (file);
- g_object_unref (file);
}
else
self->priv->save_uri = NULL;
@@ -455,7 +418,6 @@ build_filename_ready_cb (GObject *source,
{
g_critical ("Impossible to find a valid location to save the screenshot: %s",
error->message);
- g_error_free (error);
if (screenshot_config->interactive)
screenshot_show_dialog (NULL,
@@ -828,8 +790,8 @@ static GActionEntry action_entries[] = {
static void
screenshot_application_startup (GApplication *app)
{
- GMenuModel *menu;
- GtkBuilder *builder;
+ g_autoptr(GMenuModel) menu = NULL;
+ g_autoptr(GtkBuilder) builder = NULL;
ScreenshotApplication *self = SCREENSHOT_APPLICATION (app);
G_APPLICATION_CLASS (screenshot_application_parent_class)->startup (app);
@@ -846,9 +808,6 @@ screenshot_application_startup (GApplication *app)
gtk_builder_add_from_resource (builder, "/org/gnome/screenshot/screenshot-app-menu.ui", NULL);
menu = G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu"));
gtk_application_set_app_menu (GTK_APPLICATION (app), menu);
-
- g_object_unref (builder);
- g_object_unref (menu);
}
static void
@@ -904,7 +863,7 @@ screenshot_application_init (ScreenshotApplication *self)
g_application_add_main_option_entries (G_APPLICATION (self), entries);
}
-ScreenshotApplication *
+GApplication *
screenshot_application_new (void)
{
return g_object_new (SCREENSHOT_TYPE_APPLICATION,
diff --git a/src/screenshot-application.h b/src/screenshot-application.h
index 3b6fe93..59287eb 100644
--- a/src/screenshot-application.h
+++ b/src/screenshot-application.h
@@ -49,6 +49,6 @@ typedef struct {
} ScreenshotApplicationClass;
GType screenshot_application_get_type (void);
-ScreenshotApplication * screenshot_application_new (void);
+GApplication * screenshot_application_new (void);
#endif /* __SCREENSHOT_APPLICATION_H__ */
diff --git a/src/screenshot-area-selection.c b/src/screenshot-area-selection.c
index 820b88b..713e4b2 100644
--- a/src/screenshot-area-selection.c
+++ b/src/screenshot-area-selection.c
@@ -226,8 +226,8 @@ emit_select_callback_in_idle (gpointer user_data)
static void
screenshot_select_area_x11_async (CallbackData *cb_data)
{
+ g_autoptr(GdkCursor) cursor = NULL;
GdkDisplay *display;
- GdkCursor *cursor;
select_area_filter_data data;
GdkDeviceManager *manager;
GdkDevice *pointer, *keyboard;
@@ -260,10 +260,7 @@ screenshot_select_area_x11_async (CallbackData *cb_data)
cursor, GDK_CURRENT_TIME);
if (res != GDK_GRAB_SUCCESS)
- {
- g_object_unref (cursor);
- goto out;
- }
+ goto out;
res = gdk_device_grab (keyboard, gtk_widget_get_window (data.window),
GDK_OWNERSHIP_NONE, FALSE,
@@ -273,7 +270,6 @@ screenshot_select_area_x11_async (CallbackData *cb_data)
if (res != GDK_GRAB_SUCCESS)
{
gdk_device_ungrab (pointer, GDK_CURRENT_TIME);
- g_object_unref (cursor);
goto out;
}
@@ -283,8 +279,6 @@ screenshot_select_area_x11_async (CallbackData *cb_data)
gdk_device_ungrab (keyboard, GDK_CURRENT_TIME);
gtk_widget_destroy (data.window);
- g_object_unref (cursor);
-
gdk_flush ();
out:
@@ -304,15 +298,14 @@ select_area_done (GObject *source_object,
gpointer user_data)
{
CallbackData *cb_data = user_data;
- GError *error = NULL;
- GVariant *ret;
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariant) ret = NULL;
ret = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), res, &error);
if (error != NULL)
{
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
{
- g_error_free (error);
cb_data->aborted = TRUE;
g_idle_add (emit_select_callback_in_idle, cb_data);
return;
@@ -320,7 +313,6 @@ select_area_done (GObject *source_object,
g_message ("Unable to select area using GNOME Shell's builtin screenshot "
"interface, resorting to fallback X11.");
- g_error_free (error);
screenshot_select_area_x11_async (cb_data);
return;
@@ -331,7 +323,6 @@ select_area_done (GObject *source_object,
&cb_data->rectangle.y,
&cb_data->rectangle.width,
&cb_data->rectangle.height);
- g_variant_unref (ret);
g_idle_add (emit_select_callback_in_idle, cb_data);
}
diff --git a/src/screenshot-dialog.c b/src/screenshot-dialog.c
index 76757d2..9527b77 100644
--- a/src/screenshot-dialog.c
+++ b/src/screenshot-dialog.c
@@ -202,14 +202,12 @@ screenshot_dialog_new (GdkPixbuf *screenshot,
SaveScreenshotCallback f,
gpointer user_data)
{
+ g_autoptr(GFile) tmp_file = NULL, parent_file = NULL;
+ g_autoptr(GtkBuilder) ui = NULL;
+ g_autofree gchar *current_folder = NULL, *current_name = NULL;
ScreenshotDialog *dialog;
- GtkBuilder *ui;
- char *current_folder;
- char *current_name;
char *ext;
gint pos;
- GFile *tmp_file;
- GFile *parent_file;
guint res;
tmp_file = g_file_new_for_uri (initial_uri);
@@ -217,8 +215,6 @@ screenshot_dialog_new (GdkPixbuf *screenshot,
current_name = g_file_get_basename (tmp_file);
current_folder = g_file_get_uri (parent_file);
- g_object_unref (tmp_file);
- g_object_unref (parent_file);
dialog = g_new0 (ScreenshotDialog, 1);
dialog->screenshot = screenshot;
@@ -266,30 +262,19 @@ screenshot_dialog_new (GdkPixbuf *screenshot,
0,
pos);
- g_free (current_name);
- g_free (current_folder);
- g_object_unref (ui);
-
return dialog;
}
char *
screenshot_dialog_get_uri (ScreenshotDialog *dialog)
{
- gchar *folder, *file;
- gchar *uri;
- gchar *tmp;
+ g_autofree gchar *folder = NULL, *file = NULL, *tmp = NULL;
folder = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog->save_widget));
tmp = screenshot_dialog_get_filename (dialog);
file = g_uri_escape_string (tmp, NULL, FALSE);
- g_free (tmp);
- uri = g_build_filename (folder, file, NULL);
-
- g_free (folder);
- g_free (file);
- return uri;
+ return g_build_filename (folder, file, NULL);
}
char *
@@ -301,21 +286,19 @@ screenshot_dialog_get_folder (ScreenshotDialog *dialog)
char *
screenshot_dialog_get_filename (ScreenshotDialog *dialog)
{
+ g_autoptr(GError) error = NULL;
const gchar *file_name;
gchar *tmp;
- GError *error;
file_name = gtk_entry_get_text (GTK_ENTRY (dialog->filename_entry));
-
- error = NULL;
tmp = g_filename_from_utf8 (file_name, -1, NULL, NULL, &error);
- if (error)
+
+ if (error != NULL)
{
g_warning ("Unable to convert `%s' to valid UTF-8: %s\n"
"Falling back to default file.",
file_name,
error->message);
- g_error_free (error);
tmp = g_strdup (_("Screenshot.png"));
}
@@ -332,13 +315,12 @@ screenshot_dialog_set_busy (ScreenshotDialog *dialog,
if (busy)
{
+ g_autoptr(GdkCursor) cursor = NULL;
GdkDisplay *display;
- GdkCursor *cursor;
/* Change cursor to busy */
display = gtk_widget_get_display (GTK_WIDGET (dialog));
cursor = gdk_cursor_new_for_display (display, GDK_WATCH);
gdk_window_set_cursor (window, cursor);
- g_object_unref (cursor);
}
else
{
diff --git a/src/screenshot-filename-builder.c b/src/screenshot-filename-builder.c
index 86c1a51..5fbd482 100644
--- a/src/screenshot-filename-builder.c
+++ b/src/screenshot-filename-builder.c
@@ -48,7 +48,8 @@ typedef struct
static char *
expand_initial_tilde (const char *path)
{
- char *slash_after_user_name, *user_name;
+ g_autofree gchar *user_name = NULL;
+ char *slash_after_user_name;
struct passwd *passwd_file_entry;
if (path[1] == '/' || path[1] == '\0') {
@@ -63,7 +64,6 @@ expand_initial_tilde (const char *path)
slash_after_user_name - &path[1]);
}
passwd_file_entry = getpwnam (user_name);
- g_free (user_name);
if (passwd_file_entry == NULL || passwd_file_entry->pw_dir == NULL) {
return g_strdup (path);
@@ -89,35 +89,26 @@ get_default_screenshot_dir (void)
static gchar *
sanitize_save_directory (const gchar *save_dir)
{
- gchar *retval = g_strdup (save_dir);
-
if (save_dir == NULL)
return NULL;
if (save_dir[0] == '~')
- {
- char *tmp = expand_initial_tilde (save_dir);
- g_free (retval);
- retval = tmp;
- }
- else if (strstr (save_dir, "://") != NULL)
- {
- GFile *file;
+ return expand_initial_tilde (save_dir);
- g_free (retval);
- file = g_file_new_for_uri (save_dir);
- retval = g_file_get_path (file);
- g_object_unref (file);
+ if (strstr (save_dir, "://") != NULL)
+ {
+ g_autoptr(GFile) file = g_file_new_for_uri (save_dir);
+ return g_file_get_path (file);
}
- return retval;
+ return g_strdup (save_dir);
}
static char *
build_path (AsyncExistenceJob *job)
{
+ g_autofree gchar *file_name = NULL, *origin = NULL;
const gchar *base_path, *file_type;
- char *retval, *file_name, *origin;
base_path = job->base_paths[job->type];
file_type = screenshot_config->file_type;
@@ -128,11 +119,8 @@ build_path (AsyncExistenceJob *job)
if (job->screenshot_origin == NULL)
{
- GDateTime *d;
-
- d = g_date_time_new_now_local ();
+ g_autoptr(GDateTime) d = g_date_time_new_now_local ();
origin = g_date_time_format (d, "%Y-%m-%d %H-%M-%S");
- g_date_time_unref (d);
}
else
origin = g_strdup (job->screenshot_origin);
@@ -157,11 +145,7 @@ build_path (AsyncExistenceJob *job)
file_name = g_strdup_printf (_("Screenshot from %s - %d.%s"), origin, job->iteration, file_type);
}
- retval = g_build_filename (base_path, file_name, NULL);
- g_free (file_name);
- g_free (origin);
-
- return retval;
+ return g_build_filename (base_path, file_name, NULL);
}
static void
@@ -200,104 +184,56 @@ try_check_file (GTask *task,
GCancellable *cancellable)
{
AsyncExistenceJob *job = data;
- GFile *file;
- GFileInfo *info;
- GError *error;
- char *path, *retval;
-retry:
- error = NULL;
- path = build_path (job);
-
- if (path == NULL)
+ while (TRUE)
{
- (job->type)++;
- goto retry;
- }
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GFile) file = NULL;
+ g_autoptr(GFileInfo) info = NULL;
+ g_autofree gchar *path = build_path (job);
- file = g_file_new_for_path (path);
- info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TYPE,
- G_FILE_QUERY_INFO_NONE, cancellable, &error);
- if (info != NULL)
- {
- /* file already exists, iterate again */
- g_object_unref (info);
- g_object_unref (file);
- g_free (path);
+ if (path == NULL)
+ {
+ (job->type)++;
+ continue;
+ }
- (job->iteration)++;
+ file = g_file_new_for_path (path);
+ info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_QUERY_INFO_NONE, cancellable, &error);
+ if (info != NULL)
+ {
+ /* file already exists, iterate again */
+ (job->iteration)++;
+ continue;
+ }
- goto retry;
- }
- else
- {
/* see the error to check whether the location is not accessible
* or the file does not exist.
*/
- if (error->code == G_IO_ERROR_NOT_FOUND)
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
{
- GFile *parent;
+ g_autoptr(GFile) parent = g_file_get_parent (file);
- /* if the parent directory doesn't exist as well, forget the saved
+ /* if the parent directory doesn't exist as well, we'll forget the saved
* directory and treat this as a generic error.
*/
-
- parent = g_file_get_parent (file);
-
- if (!g_file_query_exists (parent, NULL))
+ if (g_file_query_exists (parent, NULL))
{
- if (!prepare_next_cycle (job))
- {
- retval = NULL;
-
- g_object_unref (parent);
- goto out;
- }
-
- g_object_unref (file);
- g_object_unref (parent);
- goto retry;
- }
- else
- {
- retval = path;
-
- g_object_unref (parent);
- goto out;
+ g_task_return_pointer (task, g_steal_pointer (&path), NULL);
+ return;
}
}
- else
- {
- /* another kind of error, assume this location is not
- * accessible.
- */
- g_free (path);
- if (prepare_next_cycle (job))
- {
- g_error_free (error);
- g_object_unref (file);
- goto retry;
- }
- else
- {
- retval = NULL;
- goto out;
- }
+ if (!prepare_next_cycle (job))
+ {
+ g_task_return_new_error (task,
+ G_IO_ERROR,
+ G_IO_ERROR_FAILED,
+ "%s", "Failed to find a valid place to save");
+ return;
}
}
-
-out:
- g_error_free (error);
- g_object_unref (file);
-
- if (retval == NULL)
- g_task_return_new_error (task,
- G_IO_ERROR,
- G_IO_ERROR_FAILED,
- "%s", "Failed to find a valid place to save");
-
- g_task_return_pointer (task, retval, NULL);
}
void
@@ -307,7 +243,7 @@ screenshot_build_filename_async (const char *save_dir,
gpointer user_data)
{
AsyncExistenceJob *job;
- GTask *task;
+ g_autoptr(GTask) task = NULL;
job = g_slice_new0 (AsyncExistenceJob);
@@ -323,7 +259,6 @@ screenshot_build_filename_async (const char *save_dir,
g_task_set_task_data (task, job, (GDestroyNotify) async_existence_job_free);
g_task_run_in_thread (task, try_check_file);
- g_object_unref (task);
}
gchar *
diff --git a/src/screenshot-interactive-dialog.c b/src/screenshot-interactive-dialog.c
index dd50c3c..e24552e 100644
--- a/src/screenshot-interactive-dialog.c
+++ b/src/screenshot-interactive-dialog.c
@@ -163,8 +163,8 @@ static guint n_effects = G_N_ELEMENTS (effects);
static GtkWidget *
create_effects_combo (void)
{
+ g_autoptr(GtkListStore) model = NULL;
GtkWidget *retval;
- GtkListStore *model;
GtkCellRenderer *renderer;
gint i;
@@ -188,7 +188,6 @@ create_effects_combo (void)
retval = gtk_combo_box_new ();
gtk_combo_box_set_model (GTK_COMBO_BOX (retval),
GTK_TREE_MODEL (model));
- g_object_unref (model);
switch (screenshot_config->border_effect[0])
{
@@ -233,7 +232,7 @@ create_effects_frame (GtkWidget *outer_vbox,
GtkWidget *label;
GtkWidget *check;
GtkWidget *combo;
- gchar *title;
+ g_autofree gchar *title = NULL;
main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_box_pack_start (GTK_BOX (outer_vbox), main_vbox, FALSE, FALSE, 0);
@@ -247,7 +246,6 @@ create_effects_frame (GtkWidget *outer_vbox,
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
- g_free (title);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0);
@@ -313,7 +311,7 @@ create_screenshot_frame (GtkWidget *outer_vbox,
GtkWidget *label;
GtkAdjustment *adjust;
GSList *group;
- gchar *title;
+ g_autofree gchar *title = NULL;
main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_box_pack_start (GTK_BOX (outer_vbox), main_vbox, FALSE, FALSE, 0);
@@ -326,7 +324,6 @@ create_screenshot_frame (GtkWidget *outer_vbox,
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
- g_free (title);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0);
@@ -439,7 +436,7 @@ screenshot_interactive_dialog_new (CaptureClickedCallback f, gpointer user_data)
GtkWidget *header_bar;
GtkWidget *button;
GtkStyleContext *context;
- GtkSizeGroup *size_group;
+ g_autoptr(GtkSizeGroup) size_group = NULL;
CaptureData *data;
dialog = gtk_application_window_new (GTK_APPLICATION (g_application_get_default ()));
@@ -488,8 +485,6 @@ screenshot_interactive_dialog_new (CaptureClickedCallback f, gpointer user_data)
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gtk_widget_destroy), dialog);
- g_object_unref (size_group);
-
gtk_widget_show_all (dialog);
return dialog;
diff --git a/src/screenshot-shadow.c b/src/screenshot-shadow.c
index db0c891..f377f98 100644
--- a/src/screenshot-shadow.c
+++ b/src/screenshot-shadow.c
@@ -208,8 +208,7 @@ screenshot_add_shadow (GdkPixbuf **src)
gdk_pixbuf_get_height (*src),
BLUR_RADIUS, BLUR_RADIUS, 1.0, 1.0,
GDK_INTERP_BILINEAR, 255);
- g_object_unref (*src);
- *src = dest;
+ g_set_object (src, dest);
}
void
@@ -234,8 +233,7 @@ screenshot_add_border (GdkPixbuf **src)
gdk_pixbuf_get_height (*src),
OUTLINE_RADIUS, OUTLINE_RADIUS, 1.0, 1.0,
GDK_INTERP_BILINEAR, 255);
- g_object_unref (*src);
- *src = dest;
+ g_set_object (src, dest);
}
void
@@ -261,8 +259,7 @@ screenshot_add_vintage (GdkPixbuf **src)
gdk_pixbuf_get_height (*src),
VINTAGE_OUTLINE_RADIUS, VINTAGE_OUTLINE_RADIUS, 1.0, 1.0,
GDK_INTERP_HYPER, 255);
- g_object_unref (*src);
- *src = dest;
+ g_set_object (src, dest);
gdk_pixbuf_saturate_and_pixelate (*src, *src,
VINTAGE_SATURATION, FALSE);
@@ -276,6 +273,5 @@ screenshot_add_vintage (GdkPixbuf **src)
if (dest == NULL)
return;
- g_object_unref (*src);
- *src = dest;
+ g_set_object (src, dest);
}
diff --git a/src/screenshot-utils.c b/src/screenshot-utils.c
index b62bf26..261fd71 100644
--- a/src/screenshot-utils.c
+++ b/src/screenshot-utils.c
@@ -381,7 +381,7 @@ static GdkPixbuf *
screenshot_fallback_get_pixbuf (GdkRectangle *rectangle)
{
GdkWindow *root, *wm_window = NULL;
- GdkPixbuf *screenshot;
+ GdkPixbuf *screenshot = NULL;
GdkRectangle real_coords, screenshot_coords;
Window wm;
GtkBorder frame_offset = { 0, 0, 0, 0 };
@@ -434,7 +434,6 @@ screenshot_fallback_get_pixbuf (GdkRectangle *rectangle)
if (screenshot_config->include_border && (wm != None))
{
XRectangle *rectangles;
- GdkPixbuf *tmp;
int rectangle_count, rectangle_order, i;
/* we must use XShape to avoid showing what's under the rounder corners
@@ -448,9 +447,8 @@ screenshot_fallback_get_pixbuf (GdkRectangle *rectangle)
if (rectangles && rectangle_count > 0)
{
gboolean has_alpha = gdk_pixbuf_get_has_alpha (screenshot);
-
- tmp = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
- screenshot_coords.width, screenshot_coords.height);
+ GdkPixbuf *tmp = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
+ screenshot_coords.width, screenshot_coords.height);
gdk_pixbuf_fill (tmp, 0);
for (i = 0; i < rectangle_count; i++)
@@ -516,8 +514,7 @@ screenshot_fallback_get_pixbuf (GdkRectangle *rectangle)
}
}
- g_object_unref (screenshot);
- screenshot = tmp;
+ g_set_object (&screenshot, tmp);
XFree (rectangles);
}
@@ -528,8 +525,8 @@ screenshot_fallback_get_pixbuf (GdkRectangle *rectangle)
* screenshot */
if (screenshot_config->include_pointer && !rectangle)
{
- GdkCursor *cursor;
- GdkPixbuf *cursor_pixbuf;
+ g_autoptr(GdkCursor) cursor = NULL;
+ g_autoptr(GdkPixbuf) cursor_pixbuf = NULL;
cursor = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_LEFT_PTR);
cursor_pixbuf = gdk_cursor_get_image (cursor);
@@ -575,9 +572,6 @@ screenshot_fallback_get_pixbuf (GdkRectangle *rectangle)
GDK_INTERP_BILINEAR,
255);
}
-
- g_object_unref (cursor_pixbuf);
- g_object_unref (cursor);
}
}
@@ -589,11 +583,11 @@ screenshot_fallback_get_pixbuf (GdkRectangle *rectangle)
GdkPixbuf *
screenshot_get_pixbuf (GdkRectangle *rectangle)
{
+ g_autoptr(GError) error = NULL;
+ g_autofree gchar *path = NULL, *filename = NULL, *tmpname = NULL;
GdkPixbuf *screenshot = NULL;
- gchar *path, *filename, *tmpname;
const gchar *method_name;
GVariant *method_params;
- GError *error = NULL;
GDBusConnection *connection;
path = g_build_filename (g_get_user_cache_dir (), "gnome-screenshot", NULL);
@@ -654,15 +648,10 @@ screenshot_get_pixbuf (GdkRectangle *rectangle)
{
g_message ("Unable to use GNOME Shell's builtin screenshot interface, "
"resorting to fallback X11.");
- g_error_free (error);
screenshot = screenshot_fallback_get_pixbuf (rectangle);
}
- g_free (path);
- g_free (tmpname);
- g_free (filename);
-
return screenshot;
}
@@ -709,19 +698,16 @@ screenshot_show_dialog (GtkWindow *parent,
void
screenshot_display_help (GtkWindow *parent)
{
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
gtk_show_uri (gtk_window_get_screen (parent),
"help:gnome-help/screen-shot-record",
gtk_get_current_event_time (), &error);
if (error)
- {
- screenshot_show_dialog (parent,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("Error loading the help page"),
- error->message);
- g_error_free (error);
- }
+ screenshot_show_dialog (parent,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ _("Error loading the help page"),
+ error->message);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]