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

Bug#426745: cdebconf-gtk-udeb: Reduce the usage of casting to struct frontend_data



Package: cdebconf
Severity: wishlist
Tags: patch

Reduce the usage of casting to struct frontend_data

From: Otavio Salvador <otavio@ossystems.com.br>

Use a local variable to avoid casting when possible. This makes the
code easier to read.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 packages/cdebconf/src/modules/frontend/gtk/gtk.c |   25 +++++++++++-----------
 1 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/packages/cdebconf/src/modules/frontend/gtk/gtk.c b/packages/cdebconf/src/modules/frontend/gtk/gtk.c
index 59a6135..9ea2928 100644
--- a/packages/cdebconf/src/modules/frontend/gtk/gtk.c
+++ b/packages/cdebconf/src/modules/frontend/gtk/gtk.c
@@ -98,13 +98,14 @@ void register_setter(void (*func)(void*, struct question*),
              void *data, struct question *q, struct frontend *obj)
 {
     struct setter_struct *s;
+    struct frontend_data *frontend_data = obj->data;
 
     s = malloc(sizeof(struct setter_struct));
     s->func = func;
     s->data = data;
     s->q = q;
-    s->next = ((struct frontend_data*)obj->data)->setters;
-    ((struct frontend_data*)obj->data)->setters = s;
+    s->next = frontend_data->setters;
+    frontend_data->setters = s;
 }
 
 void free_description_data( GtkObject *obj, struct frontend_question_data* data )
@@ -1279,6 +1280,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window)
     GtkWidget *label_title, *h_title_box, *v_title_box, *logo_button;
     GList *focus_chain = NULL;
     int *ret_val;
+    struct frontend_data *data = obj->data;
 
     /* A logo is displayed in the upper area of the screen */
     logo_button = gtk_image_new_from_file("/usr/share/graphics/logo_debian.png");
@@ -1287,7 +1289,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window)
     /* A label is used to display the fontend's title */
     label_title = gtk_label_new(NULL);
     gtk_misc_set_alignment (GTK_MISC (label_title), 0, 0);
-    ((struct frontend_data*) obj->data)->title = label_title;
+    data->title = label_title;
     h_title_box = gtk_hbox_new (TRUE, 0);
     gtk_box_pack_start(GTK_BOX (h_title_box), label_title, TRUE, TRUE, DEFAULT_PADDING);
     v_title_box = gtk_vbox_new (TRUE, 0);
@@ -1295,7 +1297,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window)
 
     /* This is the box were question(s) will be displayed */
     targetbox = gtk_vbox_new (FALSE, 0);
-    ((struct frontend_data*) obj->data)->target_box = targetbox;
+    data->target_box = targetbox;
 
     actionbox = gtk_hbutton_box_new();
     h_actionbox = gtk_hbox_new(FALSE, 0);
@@ -1307,7 +1309,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window)
     button_screenshot = gtk_button_new_with_label (get_text(obj, "debconf/gtk-button-screenshot", "Screenshot"));
     g_signal_connect (G_OBJECT (button_screenshot), "clicked", G_CALLBACK (screenshot_button_callback), obj );
     gtk_box_pack_start (GTK_BOX(actionbox), button_screenshot, TRUE, TRUE, DEFAULT_PADDING);
-    ((struct frontend_data*) obj->data)->button_screenshot = button_screenshot;
+    data->button_screenshot = button_screenshot;
     gtk_widget_set_sensitive (button_screenshot, FALSE);
 
     /* Here are the back and forward buttons */
@@ -1328,8 +1330,8 @@ void set_design_elements(struct frontend *obj, GtkWidget *window)
     gtk_box_pack_start (GTK_BOX(actionbox), button_next, TRUE, TRUE, DEFAULT_PADDING);
     GTK_WIDGET_SET_FLAGS (button_next, GTK_CAN_DEFAULT);
 
-    ((struct frontend_data*) obj->data)->button_prev = button_prev;
-    ((struct frontend_data*) obj->data)->button_next = button_next;
+    data->button_prev = button_prev;
+    data->button_next = button_next;
     gtk_widget_set_sensitive (button_prev, FALSE);
     gtk_widget_set_sensitive (button_next, FALSE);
 
@@ -1341,7 +1343,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window)
     g_signal_connect (G_OBJECT(button_cancel), "clicked",
                       G_CALLBACK(cancel_button_callback), obj);
     gtk_box_pack_start (GTK_BOX(actionbox), button_cancel, TRUE, TRUE, DEFAULT_PADDING);
-    ((struct frontend_data*) obj->data)->button_cancel = button_cancel;
+    data->button_cancel = button_cancel;
     gtk_widget_set_sensitive (button_cancel, FALSE);
 
     /* focus order inside actionbox */
@@ -1396,7 +1398,7 @@ void *eventhandler_thread()
 
 static int gtk_initialize(struct frontend *obj, struct configuration *conf)
 {
-    struct frontend_data *fe_data;
+    struct frontend_data *fe_data = obj->data;
     GtkWidget *window;
 	GThread *thread_events_listener;
 	GError *err_events_listener = NULL ;
@@ -1408,13 +1410,12 @@ static int gtk_initialize(struct frontend *obj, struct configuration *conf)
     name[1] = NULL;
 
     /* INFO(INFO_DEBUG, "GTK_DI - gtk_initialize() called"); */
-    obj->data = NEW(struct frontend_data);
     obj->interactive = 1;
 
     /* It's recomended setting fields in frontend_data structure to NULL,
      * as otherwise older GTKDFB versions may cause segfaults.
      */
-    fe_data = obj->data;
+    fe_data = NEW(struct frontend_data);
     fe_data->window = NULL;
     fe_data->title = NULL;
     fe_data->target_box = NULL;
@@ -1447,7 +1448,7 @@ static int gtk_initialize(struct frontend *obj, struct configuration *conf)
     gtk_window_set_decorated (GTK_WINDOW (window), TRUE);
     set_design_elements (obj, window);
     gtk_rc_reparse_all();
-    ((struct frontend_data*) obj->data)->window = window;
+    fe_data->window = window;
     gtk_widget_set_default_direction(get_text_direction(obj));
     gtk_widget_show_all(window);
 

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.22-rc2-686 (SMP w/1 CPU core)
Locale: LANG=pt_BR.UTF-8, LC_CTYPE=pt_BR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages cdebconf depends on:
ii  libatk1.0-0                   1.18.0-2   The ATK accessibility toolkit
ii  libc6                         2.5-9      GNU C Library: Shared libraries
ii  libcairo2                     1.4.6-1.1  The Cairo 2D vector graphics libra
ii  libdebian-installer4          0.51       Library of common debian-installer
ii  libdirectfb-0.9-25            0.9.25.1-5 direct frame buffer graphics - sha
ii  libglib2.0-0                  2.12.12-1  The GLib library of C routines
pn  libgtk-directfb-2.0-0         <none>     (no description available)
ii  libgtk2.0-0                   2.10.12-2  The GTK+ graphical user interface 
ii  libnewt0.52                   0.52.2-10  Not Erik's Windowing Toolkit - tex
ii  libpango1.0-0                 1.16.4-1   Layout and rendering of internatio
pn  libtextwrap1                  <none>     (no description available)

cdebconf recommends no packages.



Reply to: