Skip to content

Commit

Permalink
mate-session: fix memory leak
Browse files Browse the repository at this point in the history
  • Loading branch information
rbuj authored and raveit65 committed May 5, 2023
1 parent 7b09df2 commit 1bc9027
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 7 deletions.
8 changes: 6 additions & 2 deletions mate-session/gsm-manager.c
Expand Up @@ -145,7 +145,7 @@ typedef struct {
GSettings *settings_lockdown;
GSettings *settings_screensaver;

const char *renderer;
char *renderer;

DBusGProxy *bus_proxy;
DBusGConnection *connection;
Expand Down Expand Up @@ -1697,7 +1697,8 @@ _gsm_manager_set_renderer (GsmManager *manager,
{
GsmManagerPrivate *priv;
priv = gsm_manager_get_instance_private (manager);
priv->renderer = renderer;
g_free (priv->renderer);
priv->renderer = g_strdup (renderer);
}

static gboolean
Expand Down Expand Up @@ -2660,6 +2661,9 @@ gsm_manager_dispose (GObject *object)
g_object_unref (priv->settings_screensaver);
priv->settings_screensaver = NULL;
}

g_clear_pointer (&priv->renderer, g_free);

G_OBJECT_CLASS (gsm_manager_parent_class)->dispose (object);
}

Expand Down
11 changes: 6 additions & 5 deletions mate-session/main.c
Expand Up @@ -83,7 +83,6 @@ static gboolean failsafe = FALSE;
static gboolean show_version = FALSE;
static gboolean debug = FALSE;
static gboolean disable_acceleration_check = FALSE;
static char *gl_renderer = NULL;

static gboolean
initialize_gsettings (void)
Expand Down Expand Up @@ -575,7 +574,7 @@ static void set_overlay_scroll (void)
}

static gboolean
check_gl (GError **error)
check_gl (gchar **gl_renderer, GError **error)
{
int status;
char *argv[] = { LIBEXECDIR "/mate-session-check-accelerated", NULL };
Expand All @@ -585,7 +584,7 @@ check_gl (GError **error)
return TRUE;
}

if (!g_spawn_sync (NULL, (char **) argv, NULL, 0, NULL, NULL, &gl_renderer, NULL,
if (!g_spawn_sync (NULL, (char **) argv, NULL, 0, NULL, NULL, gl_renderer, NULL,
&status, error)) {
return FALSE;
}
Expand All @@ -605,6 +604,7 @@ int main(int argc, char** argv)
GSettings* accessibility_settings;
MdmSignalHandler* signal_handler;
static char** override_autostart_dirs = NULL;
char* gl_renderer = NULL;
gboolean gl_failed = FALSE;

static GOptionEntry entries[] = {
Expand Down Expand Up @@ -670,15 +670,15 @@ int main(int argc, char** argv)
g_debug ("hardware acceleration check is disabled");
} else {
/* Check GL, if it doesn't work out then force software fallback */
if (!check_gl (&error)) {
if (!check_gl (&gl_renderer, &error)) {
gl_failed = TRUE;

g_debug ("hardware acceleration check failed: %s",
error? error->message : "");
g_clear_error (&error);
if (g_getenv ("LIBGL_ALWAYS_SOFTWARE") == NULL) {
g_setenv ("LIBGL_ALWAYS_SOFTWARE", "1", TRUE);
if (!check_gl (&error)) {
if (!check_gl (&gl_renderer, &error)) {
g_warning ("software acceleration check failed: %s",
error? error->message : "");
g_clear_error (&error);
Expand Down Expand Up @@ -759,6 +759,7 @@ int main(int argc, char** argv)

gsm_xsmp_server_start(xsmp_server);
_gsm_manager_set_renderer (manager, gl_renderer);
g_free (gl_renderer);
gsm_manager_start(manager);

gtk_main();
Expand Down

0 comments on commit 1bc9027

Please sign in to comment.