refactor: allocated memeory should be in finalize method instead of dispose method
This commit is contained in:
parent
2775e497f5
commit
be7a573bef
14
src/base.c
14
src/base.c
@ -4,6 +4,12 @@
|
|||||||
G_DEFINE_ABSTRACT_TYPE(DiyaObject, diya_object, G_TYPE_OBJECT)
|
G_DEFINE_ABSTRACT_TYPE(DiyaObject, diya_object, G_TYPE_OBJECT)
|
||||||
|
|
||||||
|
|
||||||
|
static void diya_object_finalize(GObject* object)
|
||||||
|
{
|
||||||
|
g_debug("diya_object_finalize: %s", diya_object_to_string(object));
|
||||||
|
G_OBJECT_CLASS (diya_object_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
static void diya_object_dispose(GObject* object)
|
static void diya_object_dispose(GObject* object)
|
||||||
{
|
{
|
||||||
g_debug("diya_object_dispose: %s", diya_object_to_string(object));
|
g_debug("diya_object_dispose: %s", diya_object_to_string(object));
|
||||||
@ -15,6 +21,7 @@ static void diya_object_class_init(DiyaObjectClass *class)
|
|||||||
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
||||||
class->to_string = NULL;
|
class->to_string = NULL;
|
||||||
gobject_class->dispose = diya_object_dispose;
|
gobject_class->dispose = diya_object_dispose;
|
||||||
|
gobject_class->finalize = diya_object_finalize;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void diya_object_init(DiyaObject *self)
|
static void diya_object_init(DiyaObject *self)
|
||||||
@ -43,6 +50,12 @@ typedef struct _DiyaShellObjectPrivate
|
|||||||
} DiyaShellObjectPrivate;
|
} DiyaShellObjectPrivate;
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE(DiyaShellObject, diya_shell_object, DIYA_TYPE_OBJECT);
|
G_DEFINE_TYPE_WITH_PRIVATE(DiyaShellObject, diya_shell_object, DIYA_TYPE_OBJECT);
|
||||||
|
|
||||||
|
static void diya_shell_object_finalize(GObject* object)
|
||||||
|
{
|
||||||
|
g_debug("diya_shell_object_finalize: %s", diya_object_to_string(object));
|
||||||
|
G_OBJECT_CLASS(diya_shell_object_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
static void diya_shell_object_dispose(GObject* object)
|
static void diya_shell_object_dispose(GObject* object)
|
||||||
{
|
{
|
||||||
g_debug("diya_shell_object_dispose: %s", diya_object_to_string(object));
|
g_debug("diya_shell_object_dispose: %s", diya_object_to_string(object));
|
||||||
@ -91,6 +104,7 @@ static void diya_shell_object_class_init(DiyaShellObjectClass *class)
|
|||||||
{
|
{
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
||||||
gobject_class->dispose = diya_shell_object_dispose;
|
gobject_class->dispose = diya_shell_object_dispose;
|
||||||
|
gobject_class->finalize = diya_shell_object_finalize;
|
||||||
gobject_class->set_property = diya_shell_object_set_property;
|
gobject_class->set_property = diya_shell_object_set_property;
|
||||||
gobject_class->get_property = diya_shell_object_get_property;
|
gobject_class->get_property = diya_shell_object_get_property;
|
||||||
g_so_prop[SO_SHELL] = g_param_spec_pointer(DIYA_PROP_SHELL, NULL, "Reference to global shell", G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); //
|
g_so_prop[SO_SHELL] = g_param_spec_pointer(DIYA_PROP_SHELL, NULL, "Reference to global shell", G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); //
|
||||||
|
@ -13,11 +13,18 @@ struct _DiyaFilesMonitor
|
|||||||
|
|
||||||
G_DEFINE_FINAL_TYPE(DiyaFilesMonitor, diya_files_monitor, DIYA_TYPE_OBJECT)
|
G_DEFINE_FINAL_TYPE(DiyaFilesMonitor, diya_files_monitor, DIYA_TYPE_OBJECT)
|
||||||
|
|
||||||
static void diya_files_monitor_dispose(GObject *object)
|
static void diya_files_monitor_finalize(GObject *object)
|
||||||
{
|
{
|
||||||
DiyaFilesMonitor *self = DIYA_FILES_MONITOR(object);
|
DiyaFilesMonitor *self = DIYA_FILES_MONITOR(object);
|
||||||
g_debug("diya_files_monitor_dispose: %s", diya_object_to_string(object));
|
g_debug("diya_files_monitor_finalize: %s", diya_object_to_string(object));
|
||||||
g_hash_table_destroy(self->watch_table);
|
g_hash_table_destroy(self->watch_table);
|
||||||
|
G_OBJECT_CLASS(diya_files_monitor_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void diya_files_monitor_dispose(GObject *object)
|
||||||
|
{
|
||||||
|
// DiyaFilesMonitor *self = DIYA_FILES_MONITOR(object);
|
||||||
|
g_debug("diya_files_monitor_dispose: %s", diya_object_to_string(object));
|
||||||
G_OBJECT_CLASS(diya_files_monitor_parent_class)->dispose(object);
|
G_OBJECT_CLASS(diya_files_monitor_parent_class)->dispose(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,6 +44,7 @@ static void diya_files_monitor_class_init(DiyaFilesMonitorClass *class)
|
|||||||
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
||||||
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
||||||
|
|
||||||
|
gobject_class->finalize = diya_files_monitor_finalize;
|
||||||
gobject_class->dispose = diya_files_monitor_dispose;
|
gobject_class->dispose = diya_files_monitor_dispose;
|
||||||
base_class->to_string = diya_files_monitor_to_string;
|
base_class->to_string = diya_files_monitor_to_string;
|
||||||
}
|
}
|
||||||
|
@ -31,10 +31,10 @@ struct _DiyaForeignWindow
|
|||||||
};
|
};
|
||||||
G_DEFINE_FINAL_TYPE(DiyaForeignWindow, diya_foreign_window, DIYA_TYPE_SHELL_OBJECT)
|
G_DEFINE_FINAL_TYPE(DiyaForeignWindow, diya_foreign_window, DIYA_TYPE_SHELL_OBJECT)
|
||||||
|
|
||||||
static void diya_foreign_window_dispose(GObject* object)
|
static void diya_foreign_window_finalize(GObject* object)
|
||||||
{
|
{
|
||||||
DiyaForeignWindow * self = DIYA_FOREIGN_WINDOW(object);
|
DiyaForeignWindow * self = DIYA_FOREIGN_WINDOW(object);
|
||||||
g_debug("diya_foreign_window_dispose: %s", diya_object_to_string(self));
|
g_debug("diya_foreign_window_finalize: %s", diya_object_to_string(self));
|
||||||
if(self->appid)
|
if(self->appid)
|
||||||
{
|
{
|
||||||
g_free(self->appid);
|
g_free(self->appid);
|
||||||
@ -45,6 +45,13 @@ static void diya_foreign_window_dispose(GObject* object)
|
|||||||
g_free(self->title);
|
g_free(self->title);
|
||||||
self->title = NULL;
|
self->title = NULL;
|
||||||
}
|
}
|
||||||
|
G_OBJECT_CLASS(diya_foreign_window_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void diya_foreign_window_dispose(GObject* object)
|
||||||
|
{
|
||||||
|
DiyaForeignWindow * self = DIYA_FOREIGN_WINDOW(object);
|
||||||
|
g_debug("diya_foreign_window_dispose: %s", diya_object_to_string(self));
|
||||||
G_OBJECT_CLASS(diya_foreign_window_parent_class)->dispose(object);
|
G_OBJECT_CLASS(diya_foreign_window_parent_class)->dispose(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,6 +140,7 @@ static void diya_foreign_window_class_init(DiyaForeignWindowClass *class)
|
|||||||
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
||||||
|
|
||||||
gobject_class->dispose = diya_foreign_window_dispose;
|
gobject_class->dispose = diya_foreign_window_dispose;
|
||||||
|
gobject_class->finalize = diya_foreign_window_finalize;
|
||||||
gobject_class->set_property = diya_foreign_window_set_property;
|
gobject_class->set_property = diya_foreign_window_set_property;
|
||||||
gobject_class->get_property = diya_foreign_window_get_property;
|
gobject_class->get_property = diya_foreign_window_get_property;
|
||||||
base_class->to_string = diya_foreign_window_to_string;
|
base_class->to_string = diya_foreign_window_to_string;
|
||||||
|
12
src/input.c
12
src/input.c
@ -31,9 +31,9 @@ struct _DiyaInput
|
|||||||
};
|
};
|
||||||
G_DEFINE_FINAL_TYPE(DiyaInput, diya_input, DIYA_TYPE_SHELL_OBJECT)
|
G_DEFINE_FINAL_TYPE(DiyaInput, diya_input, DIYA_TYPE_SHELL_OBJECT)
|
||||||
|
|
||||||
static void diya_input_dispose(GObject *object)
|
static void diya_input_finalize(GObject *object)
|
||||||
{
|
{
|
||||||
g_debug("diya_input_dispose: %s", diya_object_to_string(object));
|
g_debug("diya_input_finalize: %s", diya_object_to_string(object));
|
||||||
DiyaInput *self = DIYA_INPUT(object);
|
DiyaInput *self = DIYA_INPUT(object);
|
||||||
if (self->name)
|
if (self->name)
|
||||||
{
|
{
|
||||||
@ -45,6 +45,13 @@ static void diya_input_dispose(GObject *object)
|
|||||||
wl_keyboard_release(self->keyboard);
|
wl_keyboard_release(self->keyboard);
|
||||||
self->keyboard = NULL;
|
self->keyboard = NULL;
|
||||||
}
|
}
|
||||||
|
G_OBJECT_CLASS(diya_input_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void diya_input_dispose(GObject *object)
|
||||||
|
{
|
||||||
|
g_debug("diya_input_dispose: %s", diya_object_to_string(object));
|
||||||
|
DiyaInput *self = DIYA_INPUT(object);
|
||||||
if (self->xkb_keymap)
|
if (self->xkb_keymap)
|
||||||
{
|
{
|
||||||
xkb_keymap_unref(self->xkb_keymap);
|
xkb_keymap_unref(self->xkb_keymap);
|
||||||
@ -88,6 +95,7 @@ static void diya_input_class_init(DiyaInputClass *class)
|
|||||||
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
||||||
|
|
||||||
gobject_class->dispose = diya_input_dispose;
|
gobject_class->dispose = diya_input_dispose;
|
||||||
|
gobject_class->finalize = diya_input_finalize;
|
||||||
// gobject_class->set_property = diya_input_set_property;
|
// gobject_class->set_property = diya_input_set_property;
|
||||||
// gobject_class->get_property = diya_input_get_property;
|
// gobject_class->get_property = diya_input_get_property;
|
||||||
base_class->to_string = diya_input_to_string;
|
base_class->to_string = diya_input_to_string;
|
||||||
|
@ -72,10 +72,12 @@ static void diya_launcher_dispose(GObject* object)
|
|||||||
if(self->dashboard)
|
if(self->dashboard)
|
||||||
{
|
{
|
||||||
gtk_window_destroy(GTK_WINDOW(self->dashboard));
|
gtk_window_destroy(GTK_WINDOW(self->dashboard));
|
||||||
|
self->dashboard = NULL;
|
||||||
}
|
}
|
||||||
if(self->taskbar)
|
if(self->taskbar)
|
||||||
{
|
{
|
||||||
gtk_window_destroy(GTK_WINDOW(self->taskbar));
|
gtk_window_destroy(GTK_WINDOW(self->taskbar));
|
||||||
|
self->taskbar = NULL;
|
||||||
}
|
}
|
||||||
G_OBJECT_CLASS(diya_launcher_parent_class)->dispose(object);
|
G_OBJECT_CLASS(diya_launcher_parent_class)->dispose(object);
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,17 @@ struct _DiyaLoginShell
|
|||||||
|
|
||||||
G_DEFINE_FINAL_TYPE(DiyaLoginShell, diya_login_shell, DIYA_TYPE_SHELL);
|
G_DEFINE_FINAL_TYPE(DiyaLoginShell, diya_login_shell, DIYA_TYPE_SHELL);
|
||||||
|
|
||||||
|
static void diya_login_shell_finalize(GObject *object)
|
||||||
|
{
|
||||||
|
DiyaLoginShell *self = DIYA_LOGIN_SHELL(object);
|
||||||
|
g_debug("diya_login_shell_finalize: %s", diya_object_to_string(self));
|
||||||
|
if (self->windows)
|
||||||
|
{
|
||||||
|
g_list_free(self->windows);
|
||||||
|
}
|
||||||
|
G_OBJECT_CLASS(diya_login_shell_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
static void diya_login_shell_dispose(GObject *object)
|
static void diya_login_shell_dispose(GObject *object)
|
||||||
{
|
{
|
||||||
DiyaLoginShell *self = DIYA_LOGIN_SHELL(object);
|
DiyaLoginShell *self = DIYA_LOGIN_SHELL(object);
|
||||||
@ -48,7 +59,7 @@ static void diya_login_shell_dispose(GObject *object)
|
|||||||
gtk_window_destroy(GTK_WINDOW(it->data));
|
gtk_window_destroy(GTK_WINDOW(it->data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_list_free(self->windows);
|
// g_list_free(self->windows);
|
||||||
}
|
}
|
||||||
if (self->bus_watch_id > 0)
|
if (self->bus_watch_id > 0)
|
||||||
{
|
{
|
||||||
@ -306,6 +317,7 @@ static void diya_login_shell_class_init(DiyaLoginShellClass *class)
|
|||||||
{
|
{
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
||||||
gobject_class->dispose = diya_login_shell_dispose;
|
gobject_class->dispose = diya_login_shell_dispose;
|
||||||
|
gobject_class->finalize = diya_login_shell_finalize;
|
||||||
// gobject_class->set_property = diya_lock_session_set_property;
|
// gobject_class->set_property = diya_lock_session_set_property;
|
||||||
// gobject_class->get_property = diya_lock_session_get_property;
|
// gobject_class->get_property = diya_lock_session_get_property;
|
||||||
|
|
||||||
|
@ -32,10 +32,18 @@ struct _DiyaSessionShell
|
|||||||
};
|
};
|
||||||
G_DEFINE_FINAL_TYPE(DiyaSessionShell, diya_session_shell, DIYA_TYPE_SHELL)
|
G_DEFINE_FINAL_TYPE(DiyaSessionShell, diya_session_shell, DIYA_TYPE_SHELL)
|
||||||
|
|
||||||
static void diya_session_shell_dispose(GObject *object)
|
static void diya_session_shell_finalize(GObject *object)
|
||||||
{
|
{
|
||||||
DiyaSessionShell *self = DIYA_SESSION_SHELL(object);
|
DiyaSessionShell *self = DIYA_SESSION_SHELL(object);
|
||||||
g_hash_table_destroy(self->windows);
|
g_hash_table_destroy(self->windows);
|
||||||
|
g_debug("diya_session_shell_finalize: %s", diya_object_to_string(object));
|
||||||
|
G_OBJECT_CLASS(diya_session_shell_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void diya_session_shell_dispose(GObject *object)
|
||||||
|
{
|
||||||
|
DiyaSessionShell *self = DIYA_SESSION_SHELL(object);
|
||||||
|
// g_hash_table_destroy(self->windows);
|
||||||
g_debug("diya_session_shell_dispose: %s", diya_object_to_string(object));
|
g_debug("diya_session_shell_dispose: %s", diya_object_to_string(object));
|
||||||
if (self->lock)
|
if (self->lock)
|
||||||
{
|
{
|
||||||
@ -152,6 +160,7 @@ static void diya_session_shell_class_init(DiyaSessionShellClass *class)
|
|||||||
|
|
||||||
/// base_class->to_string = diya_session_shell_to_string;
|
/// base_class->to_string = diya_session_shell_to_string;
|
||||||
gobject_class->dispose = diya_session_shell_dispose;
|
gobject_class->dispose = diya_session_shell_dispose;
|
||||||
|
gobject_class->finalize = diya_session_shell_finalize;
|
||||||
gobject_class->set_property = diya_session_shell_set_property;
|
gobject_class->set_property = diya_session_shell_set_property;
|
||||||
gobject_class->get_property = diya_session_shell_get_property;
|
gobject_class->get_property = diya_session_shell_get_property;
|
||||||
|
|
||||||
|
23
src/shell.c
23
src/shell.c
@ -34,15 +34,11 @@ typedef struct _DiyaShellPrivate
|
|||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE(DiyaShell, diya_shell, DIYA_TYPE_OBJECT);
|
G_DEFINE_TYPE_WITH_PRIVATE(DiyaShell, diya_shell, DIYA_TYPE_OBJECT);
|
||||||
|
|
||||||
static void diya_shell_dispose(GObject *object)
|
static void diya_shell_finalize(GObject *object)
|
||||||
{
|
{
|
||||||
g_debug("diya_shell_dispose: %s", diya_object_to_string(object));
|
g_debug("diya_shell_finalize: %s", diya_object_to_string(object));
|
||||||
DiyaShell *self = DIYA_SHELL(object);
|
DiyaShell *self = DIYA_SHELL(object);
|
||||||
DiyaShellPrivate *priv = diya_shell_get_instance_private(self);
|
DiyaShellPrivate *priv = diya_shell_get_instance_private(self);
|
||||||
if (priv->wayland)
|
|
||||||
{
|
|
||||||
g_object_unref(priv->wayland);
|
|
||||||
}
|
|
||||||
if (priv->name)
|
if (priv->name)
|
||||||
{
|
{
|
||||||
g_free(priv->name);
|
g_free(priv->name);
|
||||||
@ -53,6 +49,19 @@ static void diya_shell_dispose(GObject *object)
|
|||||||
g_free(priv->theme);
|
g_free(priv->theme);
|
||||||
priv->name = NULL;
|
priv->name = NULL;
|
||||||
}
|
}
|
||||||
|
g_hash_table_destroy(priv->vkbs);
|
||||||
|
G_OBJECT_CLASS(diya_shell_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void diya_shell_dispose(GObject *object)
|
||||||
|
{
|
||||||
|
g_debug("diya_shell_dispose: %s", diya_object_to_string(object));
|
||||||
|
DiyaShell *self = DIYA_SHELL(object);
|
||||||
|
DiyaShellPrivate *priv = diya_shell_get_instance_private(self);
|
||||||
|
if (priv->wayland)
|
||||||
|
{
|
||||||
|
g_object_unref(priv->wayland);
|
||||||
|
}
|
||||||
if (priv->css_provider)
|
if (priv->css_provider)
|
||||||
{
|
{
|
||||||
g_object_unref(priv->css_provider);
|
g_object_unref(priv->css_provider);
|
||||||
@ -61,7 +70,6 @@ static void diya_shell_dispose(GObject *object)
|
|||||||
{
|
{
|
||||||
g_object_unref(priv->input);
|
g_object_unref(priv->input);
|
||||||
}
|
}
|
||||||
g_hash_table_destroy(priv->vkbs);
|
|
||||||
if (priv->files_watchdog)
|
if (priv->files_watchdog)
|
||||||
{
|
{
|
||||||
g_object_unref(priv->files_watchdog);
|
g_object_unref(priv->files_watchdog);
|
||||||
@ -321,6 +329,7 @@ static void diya_shell_class_init(DiyaShellClass *class)
|
|||||||
{
|
{
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
||||||
gobject_class->dispose = diya_shell_dispose;
|
gobject_class->dispose = diya_shell_dispose;
|
||||||
|
gobject_class->finalize = diya_shell_finalize;
|
||||||
gobject_class->set_property = diya_shell_set_property;
|
gobject_class->set_property = diya_shell_set_property;
|
||||||
gobject_class->get_property = diya_shell_get_property;
|
gobject_class->get_property = diya_shell_get_property;
|
||||||
|
|
||||||
|
@ -37,10 +37,10 @@ struct _DiyaVkbKey
|
|||||||
|
|
||||||
G_DEFINE_FINAL_TYPE(DiyaVkbKey, diya_vkb_key, DIYA_TYPE_OBJECT)
|
G_DEFINE_FINAL_TYPE(DiyaVkbKey, diya_vkb_key, DIYA_TYPE_OBJECT)
|
||||||
|
|
||||||
static void diya_vkb_key_dispose(GObject *object)
|
static void diya_vkb_key_finalize(GObject *object)
|
||||||
{
|
{
|
||||||
DiyaVkbKey *self = DIYA_VKB_KEY(object);
|
DiyaVkbKey *self = DIYA_VKB_KEY(object);
|
||||||
g_debug("diya_vkb_key_dispose: %s", diya_object_to_string(object));
|
g_debug("diya_vkb_key_finalize: %s", diya_object_to_string(object));
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
if (self->key_caps[i])
|
if (self->key_caps[i])
|
||||||
@ -54,6 +54,13 @@ static void diya_vkb_key_dispose(GObject *object)
|
|||||||
free(self->info);
|
free(self->info);
|
||||||
self->info = NULL;
|
self->info = NULL;
|
||||||
}
|
}
|
||||||
|
G_OBJECT_CLASS(diya_vkb_key_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void diya_vkb_key_dispose(GObject *object)
|
||||||
|
{
|
||||||
|
// DiyaVkbKey *self = DIYA_VKB_KEY(object);
|
||||||
|
g_debug("diya_vkb_key_dispose: %s", diya_object_to_string(object));
|
||||||
G_OBJECT_CLASS(diya_vkb_key_parent_class)->dispose(object);
|
G_OBJECT_CLASS(diya_vkb_key_parent_class)->dispose(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,6 +98,7 @@ static void diya_vkb_key_class_init(DiyaVkbKeyClass *class)
|
|||||||
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
||||||
|
|
||||||
gobject_class->dispose = diya_vkb_key_dispose;
|
gobject_class->dispose = diya_vkb_key_dispose;
|
||||||
|
gobject_class->finalize = diya_vkb_key_finalize;
|
||||||
// gobject_class->set_property = diya_lock_session_set_property;
|
// gobject_class->set_property = diya_lock_session_set_property;
|
||||||
// gobject_class->get_property = diya_lock_session_get_property;
|
// gobject_class->get_property = diya_lock_session_get_property;
|
||||||
base_class->to_string = diya_vkb_key_to_string;
|
base_class->to_string = diya_vkb_key_to_string;
|
||||||
@ -141,11 +149,23 @@ struct _DiyaVirtualKeyboard
|
|||||||
|
|
||||||
G_DEFINE_FINAL_TYPE(DiyaVirtualKeyboard, diya_virtual_keyboard, DIYA_TYPE_SHELL_OBJECT);
|
G_DEFINE_FINAL_TYPE(DiyaVirtualKeyboard, diya_virtual_keyboard, DIYA_TYPE_SHELL_OBJECT);
|
||||||
|
|
||||||
|
static void diya_virtual_keyboard_finalize(GObject *object)
|
||||||
|
{
|
||||||
|
DiyaVirtualKeyboard *self = DIYA_VIRTUAL_KEYBOARD(object);
|
||||||
|
g_debug("diya_virtual_keyboard_finalize: %s", diya_object_to_string(object));
|
||||||
|
g_hash_table_destroy(self->keys);
|
||||||
|
if (self->keyboard)
|
||||||
|
{
|
||||||
|
zwp_virtual_keyboard_v1_destroy(self->keyboard);
|
||||||
|
self->keyboard = NULL;
|
||||||
|
}
|
||||||
|
G_OBJECT_CLASS(diya_virtual_keyboard_parent_class)->finalize(object);
|
||||||
|
}
|
||||||
|
|
||||||
static void diya_virtual_keyboard_dispose(GObject *object)
|
static void diya_virtual_keyboard_dispose(GObject *object)
|
||||||
{
|
{
|
||||||
DiyaVirtualKeyboard *self = DIYA_VIRTUAL_KEYBOARD(object);
|
DiyaVirtualKeyboard *self = DIYA_VIRTUAL_KEYBOARD(object);
|
||||||
g_debug("diya_virtual_keyboard_dispose: %s", diya_object_to_string(object));
|
g_debug("diya_virtual_keyboard_dispose: %s", diya_object_to_string(object));
|
||||||
g_hash_table_destroy(self->keys);
|
|
||||||
if (self->vkb_keymap)
|
if (self->vkb_keymap)
|
||||||
{
|
{
|
||||||
xkb_keymap_unref(self->vkb_keymap);
|
xkb_keymap_unref(self->vkb_keymap);
|
||||||
@ -156,11 +176,6 @@ static void diya_virtual_keyboard_dispose(GObject *object)
|
|||||||
xkb_context_unref(self->vkb_ctx);
|
xkb_context_unref(self->vkb_ctx);
|
||||||
self->vkb_ctx = NULL;
|
self->vkb_ctx = NULL;
|
||||||
}
|
}
|
||||||
if (self->keyboard)
|
|
||||||
{
|
|
||||||
zwp_virtual_keyboard_v1_destroy(self->keyboard);
|
|
||||||
self->keyboard = NULL;
|
|
||||||
}
|
|
||||||
G_OBJECT_CLASS(diya_virtual_keyboard_parent_class)->dispose(object);
|
G_OBJECT_CLASS(diya_virtual_keyboard_parent_class)->dispose(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,6 +204,7 @@ static void diya_virtual_keyboard_class_init(DiyaVirtualKeyboardClass *class)
|
|||||||
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
DiyaObjectClass *base_class = DIYA_OBJECT_CLASS(class);
|
||||||
|
|
||||||
gobject_class->dispose = diya_virtual_keyboard_dispose;
|
gobject_class->dispose = diya_virtual_keyboard_dispose;
|
||||||
|
gobject_class->finalize = diya_virtual_keyboard_finalize;
|
||||||
// gobject_class->set_property = diya_lock_session_set_property;
|
// gobject_class->set_property = diya_lock_session_set_property;
|
||||||
// gobject_class->get_property = diya_lock_session_get_property;
|
// gobject_class->get_property = diya_lock_session_get_property;
|
||||||
base_class->to_string = diya_virtual_keyboard_to_string;
|
base_class->to_string = diya_virtual_keyboard_to_string;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user