From 3d2224a8d4f3f4efba858ffdbe9b11a5d3276a6e Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sun, 24 May 2015 13:18:50 +0200 Subject: [PATCH] Really initialize desktop widgets --- src/widget.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/widget.c b/src/widget.c index 63440da..d10b44d 100644 --- a/src/widget.c +++ b/src/widget.c @@ -47,9 +47,17 @@ DesktopWidget * desktop_widget_new(char const * name) if((widget = object_new(sizeof(*widget))) == NULL) return NULL; - if((widget->plugin = plugin_new(LIBDIR, "Desktop", "widget", name)) - == NULL || (widget->definition = plugin_lookup( - widget->plugin, "widget")) == NULL) + widget->definition = NULL; + widget->dplugin = NULL; + if((widget->plugin = plugin_new(LIBDIR, "Desktop", "widget", + name)) == NULL + || (widget->definition = plugin_lookup(widget->plugin, + "widget")) == NULL + || widget->definition->init == NULL + || widget->definition->destroy == NULL + || widget->definition->get_widget == NULL + || (widget->dplugin = widget->definition->init(name)) + == NULL) { desktop_widget_delete(widget); return NULL; @@ -61,8 +69,8 @@ DesktopWidget * desktop_widget_new(char const * name) /* desktop_widget_delete */ void desktop_widget_delete(DesktopWidget * widget) { - if(widget->definition != NULL && widget->plugin != NULL) - widget->definition->destroy(widget->plugin); + if(widget->definition != NULL && widget->dplugin != NULL) + widget->definition->destroy(widget->dplugin); if(widget->plugin != NULL) plugin_delete(widget->plugin); object_delete(widget);