[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [virt-tools-list] [PATCH 5/5] Fix "Do not ask me again" checkbox settings saving



wait, that's bad, dispose can potentially be run multiple times.

nack

On Wed, Feb 6, 2013 at 3:13 PM, Marc-André Lureau
<marcandre lureau gmail com> wrote:
> ack
>
> On Wed, Feb 6, 2013 at 2:39 PM, Hans de Goede <hdegoede redhat com> wrote:
>> The code block for saving was below this check:
>>
>>     if (priv->session) {
>>         virt_viewer_session_close(VIRT_VIEWER_SESSION(priv->session));
>>         if (priv->connected) {
>>             priv->quiting = TRUE;
>>             return;
>>         }
>>     }
>>
>> Which means it never executes when quiting virt-viewer while conneced, causing
>> the "Do not ask me again" checkbox settings to not be saved.
>>
>> This patch fixes this by moving the saving code to virt_viewer_app_dispose()
>> which also nice balances it with the loading code in virt_viewer_app_init().
>>
>> Signed-off-by: Hans de Goede <hdegoede redhat com>
>> ---
>>  src/virt-viewer-app.c | 33 ++++++++++++++++-----------------
>>  1 file changed, 16 insertions(+), 17 deletions(-)
>>
>> diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
>> index f5d78a9..ca401f5 100644
>> --- a/src/virt-viewer-app.c
>> +++ b/src/virt-viewer-app.c
>> @@ -223,9 +223,6 @@ virt_viewer_app_simple_message_dialog(VirtViewerApp *self,
>>  void
>>  virt_viewer_app_quit(VirtViewerApp *self)
>>  {
>> -    GError *error = NULL;
>> -    gchar *data;
>> -
>>      g_return_if_fail(VIRT_VIEWER_IS_APP(self));
>>      VirtViewerAppPrivate *priv = self->priv;
>>
>> @@ -237,20 +234,6 @@ virt_viewer_app_quit(VirtViewerApp *self)
>>          }
>>      }
>>
>> -    {
>> -        gchar *dir = g_path_get_dirname(priv->config_file);
>> -        if (g_mkdir_with_parents(dir, S_IRWXU) == -1)
>> -            g_warning("failed to create config directory");
>> -        g_free(dir);
>> -    }
>> -
>> -    if ((data = g_key_file_to_data(priv->config, NULL, &error)) == NULL ||
>> -        !g_file_set_contents(priv->config_file, data, -1, &error)) {
>> -        g_warning("Couldn't save configuration: %s", error->message);
>> -        g_clear_error(&error);
>> -    }
>> -    g_free(data);
>> -
>>      gtk_main_quit();
>>  }
>>
>> @@ -1310,6 +1293,8 @@ virt_viewer_app_dispose (GObject *object)
>>  {
>>      VirtViewerApp *self = VIRT_VIEWER_APP(object);
>>      VirtViewerAppPrivate *priv = self->priv;
>> +    GError *error = NULL;
>> +    gchar *data;
>>
>>      if (priv->windows) {
>>          GHashTable *tmp = priv->windows;
>> @@ -1340,6 +1325,20 @@ virt_viewer_app_dispose (GObject *object)
>>      priv->guri = NULL;
>>      g_free(priv->title);
>>      priv->title = NULL;
>> +
>> +    {
>> +        gchar *dir = g_path_get_dirname(priv->config_file);
>> +        if (g_mkdir_with_parents(dir, S_IRWXU) == -1)
>> +            g_warning("failed to create config directory");
>> +        g_free(dir);
>> +    }
>> +
>> +    if ((data = g_key_file_to_data(priv->config, NULL, &error)) == NULL ||
>> +        !g_file_set_contents(priv->config_file, data, -1, &error)) {
>> +        g_warning("Couldn't save configuration: %s", error->message);
>> +        g_clear_error(&error);
>> +    }
>> +    g_free(data);
>>      g_free(priv->config_file);
>>      priv->config_file = NULL;
>>      g_clear_pointer(&priv->config, g_key_file_free);
>> --
>> 1.8.1
>>
>> _______________________________________________
>> virt-tools-list mailing list
>> virt-tools-list redhat com
>> https://www.redhat.com/mailman/listinfo/virt-tools-list
>
>
>
> --
> Marc-André Lureau



-- 
Marc-André Lureau


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]