diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/configure.in xmms-1.2.9/configure.in
--- xmms-1.2.9-orig/configure.in	2004-01-28 21:16:45.000000000 +0000
+++ xmms-1.2.9/configure.in	2004-05-21 15:29:15.000000000 +0100
@@ -64,8 +64,8 @@
 
 AC_CHECK_HEADER(pthread.h,,AC_MSG_ERROR([*** POSIX thread support not installed - please install first ***]))
 
-AM_PATH_GLIB(1.2.2,,AC_MSG_ERROR([*** GLIB >= 1.2.2 not installed - please install first ***]))
-AM_PATH_GTK(1.2.2,,AC_MSG_ERROR([*** GTK+ >= 1.2.2 not installed - please install first ***]),gthread)
+AM_PATH_GLIB_2_0(2.0.0,,AC_MSG_ERROR([*** GLIB >= 2.0.0 not installed - please install first ***]))
+AM_PATH_GTK_2_0(2.0.0,,AC_MSG_ERROR([*** GTK+ >= 2.0.0 not installed - please install first ***]),gthread)
 AC_PATH_PROG(XMMS_PATH,xmms,no)
 
 LIBS_save=$LIBS
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/General/ir/about.c xmms-1.2.9/General/ir/about.c
--- xmms-1.2.9-orig/General/ir/about.c	2000-02-16 21:05:50.000000000 +0000
+++ xmms-1.2.9/General/ir/about.c	2004-05-21 15:04:13.000000000 +0100
@@ -22,7 +22,7 @@
 
         if (ir_about_win)
                 return;
-        ir_about_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    ir_about_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(ir_about_win), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &ir_about_win);
         gtk_window_set_title(GTK_WINDOW(ir_about_win), _("About"));
         gtk_window_set_policy(GTK_WINDOW(ir_about_win), FALSE, FALSE, FALSE);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/General/ir/configure.c xmms-1.2.9/General/ir/configure.c
--- xmms-1.2.9-orig/General/ir/configure.c	2003-05-19 22:22:06.000000000 +0100
+++ xmms-1.2.9/General/ir/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -141,7 +141,7 @@
 
                 keepConfGoing = TRUE;
                 irbutton_to_edit = data;
-                irconf_controlwin = gtk_window_new(GTK_WINDOW_DIALOG);
+        irconf_controlwin = gtk_window_new(GTK_WINDOW_POPUP);
                 gtk_signal_connect(GTK_OBJECT(irconf_controlwin), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &irconf_controlwin);
                 tmp=g_strdup_printf(_("`%s' Button Setup"),_(data));
                 gtk_window_set_title(GTK_WINDOW(irconf_controlwin), tmp);
@@ -250,7 +250,7 @@
         if (!irconf_mainwin)
         {
 
-                irconf_mainwin = gtk_window_new(GTK_WINDOW_DIALOG);
+        irconf_mainwin = gtk_window_new(GTK_WINDOW_POPUP);
                 gtk_signal_connect(GTK_OBJECT(irconf_mainwin), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &irconf_mainwin);
                 gtk_window_set_title(GTK_WINDOW(irconf_mainwin), _("XMMS IRman Configuration"));
                 gtk_window_set_policy(GTK_WINDOW(irconf_mainwin), FALSE, FALSE, FALSE);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/General/joystick/configure.c xmms-1.2.9/General/joystick/configure.c
--- xmms-1.2.9-orig/General/joystick/configure.c	2002-01-06 01:11:51.000000000 +0000
+++ xmms-1.2.9/General/joystick/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -77,11 +77,10 @@
 /* ---------------------------------------------------------------------- */
 void joy_configure(void)
 {
-        static gint pack_pos[4] =
-        {GTK_SIDE_TOP, GTK_SIDE_BOTTOM, GTK_SIDE_LEFT, GTK_SIDE_RIGHT},
-             hist_val[4];
+    static gint hist_val[4];
         GtkWidget *vbox, *vbox2, *hbox, *box, *box2, *frame, *table, *label, *button, *item;
-        GtkWidget *dir_pack, *blist;
+    GtkWidget *blist;
+    GtkWidget *dir_pack_hbox, *dir_pack_vbox;
         int i, j;
         char buf[20];
 
@@ -89,7 +88,7 @@
 
         if (!joyconf_mainwin)
         {
-                joyconf_mainwin = gtk_window_new(GTK_WINDOW_DIALOG);
+        joyconf_mainwin = gtk_window_new(GTK_WINDOW_POPUP);
                 gtk_signal_connect(GTK_OBJECT(joyconf_mainwin), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &joyconf_mainwin);
                 gtk_window_set_title(GTK_WINDOW(joyconf_mainwin), _("XMMS Joystick Configuration"));
                 gtk_window_set_policy(GTK_WINDOW(joyconf_mainwin), FALSE, FALSE, FALSE);
@@ -182,9 +181,9 @@
                 /* -------------------------------------------------- */
                 frame = gtk_frame_new(_("Directionals:"));
                 gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 0);
-                dir_pack = gtk_packer_new();
-                gtk_container_set_border_width(GTK_CONTAINER(dir_pack), 5);
-                gtk_container_add(GTK_CONTAINER(frame), dir_pack);
+        dir_pack_vbox = gtk_vbox_new( TRUE, 5 );
+        gtk_container_set_border_width(GTK_CONTAINER(dir_pack_vbox), 5);
+        gtk_container_add(GTK_CONTAINER(frame), dir_pack_vbox);
                 hist_val[0] = joy_cfg.up;
                 hist_val[1] = joy_cfg.down;
                 hist_val[2] = joy_cfg.left;
@@ -194,22 +193,31 @@
                 {
                         blist = gtk_option_menu_new();
                         gtk_widget_set_usize(blist, 120, -1);
-                        gtk_packer_add(GTK_PACKER(dir_pack), blist, pack_pos[i], GTK_ANCHOR_CENTER, 0, 0, 5, 5, 0, 0);
+            if ( i == 0 || i == 3 ) {
+                gtk_container_add( GTK_CONTAINER( dir_pack_vbox ), blist );
+            } else {
+                if ( i == 1 ) {
+                    dir_pack_hbox = gtk_hbox_new( TRUE, 5 );
+                    gtk_container_add( GTK_CONTAINER( dir_pack_vbox ), dir_pack_hbox );
+                    gtk_widget_show( dir_pack_hbox );
+                }
+                gtk_container_add( GTK_CONTAINER( dir_pack_vbox ), blist );
+            }
                         gtk_option_menu_remove_menu(GTK_OPTION_MENU(blist));
                         gtk_option_menu_set_menu(GTK_OPTION_MENU(blist), joy_menus[i]);
                         gtk_option_menu_set_history(GTK_OPTION_MENU(blist), hist_val[i]);
                         gtk_widget_show(blist);
                 }
 
-                gtk_widget_show(dir_pack);
+        gtk_widget_show(dir_pack_vbox);
                 gtk_widget_show(frame);
 
                 /* -------------------------------------------------- */
                 frame = gtk_frame_new(_("Directionals (alternate):"));
                 gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 0);
-                dir_pack = gtk_packer_new();
-                gtk_container_set_border_width(GTK_CONTAINER(dir_pack), 5);
-                gtk_container_add(GTK_CONTAINER(frame), dir_pack);
+        dir_pack_vbox = gtk_vbox_new( TRUE, 5 );
+        gtk_container_set_border_width(GTK_CONTAINER(dir_pack_vbox), 5);
+        gtk_container_add(GTK_CONTAINER(frame), dir_pack_vbox);
                 hist_val[0] = joy_cfg.alt_up;
                 hist_val[1] = joy_cfg.alt_down;
                 hist_val[2] = joy_cfg.alt_left;
@@ -219,14 +227,23 @@
                 {
                         blist = gtk_option_menu_new();
                         gtk_widget_set_usize(blist, 120, -1);
-                        gtk_packer_add(GTK_PACKER(dir_pack), blist, pack_pos[i], GTK_ANCHOR_CENTER, 0, 0, 5, 5, 0, 0);
+            if ( i == 0 || i == 3 ) {
+                gtk_container_add( GTK_CONTAINER( dir_pack_vbox ), blist );
+            } else {
+                if ( i == 1 ) {
+                    dir_pack_hbox = gtk_hbox_new( TRUE, 5 );
+                    gtk_container_add( GTK_CONTAINER( dir_pack_vbox ), dir_pack_hbox );
+                    gtk_widget_show( dir_pack_hbox );
+                }
+                gtk_container_add( GTK_CONTAINER( dir_pack_vbox ), blist );
+            }
                         gtk_option_menu_remove_menu(GTK_OPTION_MENU(blist));
-                        gtk_option_menu_set_menu(GTK_OPTION_MENU(blist), joy_menus[4 + i]);
+            gtk_option_menu_set_menu(GTK_OPTION_MENU(blist), joy_menus[i]);
                         gtk_option_menu_set_history(GTK_OPTION_MENU(blist), hist_val[i]);
                         gtk_widget_show(blist);
                 }
 
-                gtk_widget_show(dir_pack);
+        gtk_widget_show(dir_pack_vbox);
                 gtk_widget_show(frame);
 
                 /* -------------------------------------------------- */
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/General/song_change/song_change.c xmms-1.2.9/General/song_change/song_change.c
--- xmms-1.2.9-orig/General/song_change/song_change.c	2003-08-08 18:10:40.000000000 +0100
+++ xmms-1.2.9/General/song_change/song_change.c	2004-05-21 15:04:13.000000000 +0100
@@ -91,8 +91,8 @@
         char *cmd, *cmd_end;
         ConfigFile *cfgfile = xmms_cfg_open_default_file();
 
-        cmd = gtk_entry_get_text(GTK_ENTRY(cmd_entry));
-        cmd_end = gtk_entry_get_text(GTK_ENTRY(cmd_end_entry));
+    cmd = (gchar *)gtk_entry_get_text(GTK_ENTRY(cmd_entry));
+    cmd_end = (gchar *)gtk_entry_get_text(GTK_ENTRY(cmd_end_entry));
 
         xmms_cfg_write_string(cfgfile, "song_change", "cmd_line", cmd);
         xmms_cfg_write_string(cfgfile, "song_change", "cmd_line_end", cmd_end);
@@ -114,7 +114,7 @@
         GtkWidget *warn_win, *warn_vbox, *warn_desc;
         GtkWidget *warn_bbox, *warn_yes, *warn_no;
 
-        warn_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    warn_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(warn_win), _("Warning"));
         gtk_window_set_transient_for(GTK_WINDOW(warn_win),
                                      GTK_WINDOW(configure_win));
@@ -179,8 +179,8 @@
 {
         char *cmd, *cmd_end;
 
-        cmd = gtk_entry_get_text(GTK_ENTRY(cmd_entry));
-        cmd_end = gtk_entry_get_text(GTK_ENTRY(cmd_end_entry));
+    cmd = (gchar *)gtk_entry_get_text(GTK_ENTRY(cmd_entry));
+    cmd_end = (gchar *)gtk_entry_get_text(GTK_ENTRY(cmd_end_entry));
 
         if (check_command(cmd) < 0 || check_command(cmd_end) < 0)
                 warn_user();
@@ -201,7 +201,7 @@
 
         read_config();
 
-        configure_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    configure_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &configure_win);
         gtk_window_set_title(GTK_WINDOW(configure_win), _("Song Change Configuration"));
         
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/cdaudio/cddb.c xmms-1.2.9/Input/cdaudio/cddb.c
--- xmms-1.2.9-orig/Input/cdaudio/cddb.c	2003-11-10 21:20:34.000000000 +0000
+++ xmms-1.2.9/Input/cdaudio/cddb.c	2004-05-21 15:04:13.000000000 +0100
@@ -724,7 +724,7 @@
         titles[2] = _("Longitude");
         titles[3] = _("Description");
 
-        server = gtk_entry_get_text(server_entry);
+    server = (gchar *)gtk_entry_get_text(server_entry);
 
         if ((level = cddb_check_protocol_level(server)) < 3)
         {
@@ -762,8 +762,8 @@
         gtk_box_pack_start(GTK_BOX(GTK_DIALOG(server_dialog)->vbox), vbox, TRUE, TRUE, 0);
 
         server_clist = gtk_clist_new_with_titles(4, titles);
-        gtk_signal_connect(GTK_OBJECT(server_clist), "select-row",
-                           cddb_server_dialog_select, data);
+    g_signal_connect(GTK_OBJECT(server_clist), "select-row",
+                     G_CALLBACK(cddb_server_dialog_select), data);
         gtk_box_pack_start(GTK_BOX(vbox), server_clist, TRUE, TRUE, 0);
 
         bbox = gtk_hbutton_box_new();
@@ -844,7 +844,7 @@
         if (debug_window)
                 return;
         
-        debug_window = gtk_window_new(GTK_WINDOW_DIALOG);
+    debug_window = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(debug_window), "destroy",
                            GTK_SIGNAL_FUNC(gtk_widget_destroyed), &debug_window);
         gtk_window_set_title(GTK_WINDOW(debug_window), "CDDB networkdebug");
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/cdaudio/configure.c xmms-1.2.9/Input/cdaudio/configure.c
--- xmms-1.2.9-orig/Input/cdaudio/configure.c	2004-01-27 23:09:39.000000000 +0000
+++ xmms-1.2.9/Input/cdaudio/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -77,7 +77,7 @@
                 drive = g_malloc0(sizeof (*drive));
                 drive->device = g_strdup(gtk_entry_get_text(GTK_ENTRY(config->device)));
 
-                tmp = gtk_entry_get_text(GTK_ENTRY(config->directory));
+        tmp = (gchar *)gtk_entry_get_text(GTK_ENTRY(config->directory));
                 if (strlen(tmp) < 2 || tmp[strlen(tmp) - 1] == '/')
                         drive->directory = g_strdup(tmp);
                 else
@@ -105,7 +105,7 @@
         cdda_cfg.name_format = g_strdup(gtk_entry_get_text(GTK_ENTRY(cdi_name)));
 
         cdda_cfg.use_cddb = GET_TB(cdi_use_cddb);
-        cdda_cddb_set_server(gtk_entry_get_text(GTK_ENTRY(cdi_cddb_server)));
+    cdda_cddb_set_server((gchar *)gtk_entry_get_text(GTK_ENTRY(cdi_cddb_server)));
 
 #if 0
         cdda_cfg.use_cdin = GET_TB(cdi_use_cdin);
@@ -242,8 +242,8 @@
         GString *str = g_string_new("");
         struct stat stbuf;
 
-        device = gtk_entry_get_text(GTK_ENTRY(drive->device));
-        directory = gtk_entry_get_text(GTK_ENTRY(drive->directory));
+    device = (gchar *)gtk_entry_get_text(GTK_ENTRY(drive->device));
+    directory = (gchar *)gtk_entry_get_text(GTK_ENTRY(drive->directory));
 
         if ((fd = open(device, CDOPENFLAGS)) < 0)
                 g_string_sprintfa(str, _("Failed to open device %s\n"
@@ -325,7 +325,7 @@
                                           directory);
         }
                         
-        window = gtk_window_new(GTK_WINDOW_DIALOG);
+    window = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_transient_for(GTK_WINDOW(window),
                                      GTK_WINDOW(cdda_configure_win));
         gtk_container_set_border_width(GTK_CONTAINER(window), 10);
@@ -424,8 +424,8 @@
         d->mixer_oss = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(volume_none), _("OSS mixer"));
         gtk_box_pack_start(GTK_BOX(volume_box), d->mixer_oss, FALSE, FALSE, 0);
 
-        gtk_signal_connect(GTK_OBJECT(readmode_analog), "toggled",
-                           toggle_set_sensitive_cb, volume_frame);
+    g_signal_connect(readmode_analog, "toggled",
+                     G_CALLBACK(toggle_set_sensitive_cb), volume_frame);
 #ifndef HAVE_OSS
         gtk_widget_set_sensitive(d->mixer_oss, FALSE);
 #endif
@@ -494,7 +494,7 @@
         if (cdda_configure_win)
                 return;
         
-        cdda_configure_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    cdda_configure_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(cdda_configure_win), "destroy",
                            GTK_SIGNAL_FUNC(gtk_widget_destroyed),
                            &cdda_configure_win);
@@ -638,8 +638,8 @@
         cdi_name_enable_vbox = gtk_vbox_new(FALSE, 10);
         gtk_container_add(GTK_CONTAINER(cdi_name_vbox), cdi_name_enable_vbox);
         gtk_widget_set_sensitive(cdi_name_enable_vbox, cdda_cfg.title_override);
-        gtk_signal_connect(GTK_OBJECT(cdi_name_override), "toggled",
-                           toggle_set_sensitive_cb, cdi_name_enable_vbox);
+    g_signal_connect(cdi_name_override, "toggled",
+                     G_CALLBACK(toggle_set_sensitive_cb), cdi_name_enable_vbox);
 
         cdi_name_hbox = gtk_hbox_new(FALSE, 5);
         gtk_box_pack_start(GTK_BOX(cdi_name_enable_vbox), cdi_name_hbox, FALSE, FALSE, 0);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/mikmod/plugin.c xmms-1.2.9/Input/mikmod/plugin.c
--- xmms-1.2.9-orig/Input/mikmod/plugin.c	2003-11-20 13:35:33.000000000 +0000
+++ xmms-1.2.9/Input/mikmod/plugin.c	2004-05-21 15:04:13.000000000 +0100
@@ -284,7 +284,7 @@
                 ext = strrchr(temp, '.');
                 if (ext)
                         *ext = '\0';
-                input->file_name = g_basename(temp);
+        input->file_name = (gchar *)g_basename(temp);
                 input->file_ext = ext ? ext+1 : NULL;
                 input->file_path = temp;
 
@@ -421,7 +421,7 @@
 
         if (!mikmod_conf_window)
         {
-                mikmod_conf_window = gtk_window_new(GTK_WINDOW_DIALOG);
+        mikmod_conf_window = gtk_window_new(GTK_WINDOW_POPUP);
                 gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "mikmod_conf_window", mikmod_conf_window);
                 gtk_window_set_title(GTK_WINDOW(mikmod_conf_window), _("MikMod Configuration"));
                 gtk_window_set_policy(GTK_WINDOW(mikmod_conf_window), FALSE, FALSE, FALSE);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/mpg123/configure.c xmms-1.2.9/Input/mpg123/configure.c
--- xmms-1.2.9-orig/Input/mpg123/configure.c	2003-05-19 22:22:06.000000000 +0100
+++ xmms-1.2.9/Input/mpg123/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -239,7 +239,7 @@
                 gdk_window_raise(mpg123_configurewin->window);
                 return;
         }
-        mpg123_configurewin = gtk_window_new(GTK_WINDOW_DIALOG);
+    mpg123_configurewin = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(mpg123_configurewin), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &mpg123_configurewin);
         gtk_signal_connect(GTK_OBJECT(mpg123_configurewin), "destroy", GTK_SIGNAL_FUNC(configure_destroy), &mpg123_configurewin);
         gtk_window_set_title(GTK_WINDOW(mpg123_configurewin), _("MPG123 Configuration"));
@@ -559,7 +559,7 @@
 
         title_override = gtk_check_button_new_with_label(_("Override generic titles"));
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(title_override), mpg123_cfg.title_override);
-        gtk_signal_connect(GTK_OBJECT(title_override), "clicked", title_override_cb, NULL);
+    g_signal_connect(title_override, "clicked", G_CALLBACK(title_override_cb), NULL);
         gtk_box_pack_start(GTK_BOX(title_id3_vbox), title_override, FALSE, FALSE, 0);
 
         title_id3_box = gtk_hbox_new(FALSE, 5);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/mpg123/fileinfo.c xmms-1.2.9/Input/mpg123/fileinfo.c
--- xmms-1.2.9-orig/Input/mpg123/fileinfo.c	2004-01-11 18:20:30.000000000 +0000
+++ xmms-1.2.9/Input/mpg123/fileinfo.c	2004-05-21 15:04:13.000000000 +0100
@@ -286,10 +286,10 @@
                 GtkWidget *label, *filename_hbox;
                 GtkWidget *bbox, *save, *remove_id3, *cancel;
                 
-                window = gtk_window_new(GTK_WINDOW_DIALOG);
+        window = gtk_window_new(GTK_WINDOW_POPUP);
                 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
-                gtk_signal_connect(GTK_OBJECT(window), "destroy",
-                                   gtk_widget_destroyed, &window);
+        g_signal_connect(window, "destroy",
+                   G_CALLBACK(gtk_widget_destroyed), &window);
                 gtk_container_set_border_width(GTK_CONTAINER(window), 10);
 
                 vbox = gtk_vbox_new(FALSE, 10);
@@ -409,8 +409,8 @@
                         genre_list = g_list_sort(genre_list, genre_comp_func);
                 }
                 genre_set_popdown(genre_combo, genre_list);
-                gtk_signal_connect(GTK_OBJECT(GTK_COMBO(genre_combo)->list),
-                                   "select-child", genre_selected, NULL);
+        g_signal_connect(GTK_COMBO(genre_combo)->list,
+                         "select-child", G_CALLBACK(genre_selected), NULL);
 
                 gtk_table_attach(GTK_TABLE(table), genre_combo, 1, 4, 5, 6,
                                  GTK_FILL | GTK_EXPAND | GTK_SHRINK,
@@ -423,20 +423,21 @@
                 gtk_box_pack_start(GTK_BOX(left_vbox), bbox, FALSE, FALSE, 0);
 
                 save = gtk_button_new_with_label(_("Save"));
-                gtk_signal_connect(GTK_OBJECT(save), "clicked", save_cb, NULL);
+        g_signal_connect(save, "clicked", G_CALLBACK(save_cb), NULL);
                 GTK_WIDGET_SET_FLAGS(save, GTK_CAN_DEFAULT);
                 gtk_box_pack_start(GTK_BOX(bbox), save, TRUE, TRUE, 0);
                 gtk_widget_grab_default(save);
 
                 remove_id3 = gtk_button_new_with_label(_("Remove ID3"));
-                gtk_signal_connect(GTK_OBJECT(remove_id3), "clicked",
-                                   remove_id3_cb, NULL);
+        g_signal_connect(remove_id3, "clicked",
+                         G_CALLBACK(remove_id3_cb), NULL);
                 GTK_WIDGET_SET_FLAGS(remove_id3, GTK_CAN_DEFAULT);
                 gtk_box_pack_start(GTK_BOX(bbox), remove_id3, TRUE, TRUE, 0);
 
                 cancel = gtk_button_new_with_label(_("Cancel"));
-                gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked",
-                                          gtk_widget_destroy, GTK_OBJECT(window));
+        g_signal_connect_swapped(cancel, "clicked",
+                                 G_CALLBACK(gtk_widget_destroy),
+                                 window);
                 GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
                 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);
 
@@ -492,7 +493,7 @@
         gtk_entry_set_text(GTK_ENTRY(filename_entry), filename);
         gtk_editable_set_position(GTK_EDITABLE(filename_entry), -1);
 
-        title = g_strdup(g_basename(filename));
+    title = g_path_get_basename(filename);
         if ((tmp = strrchr(title, '.')) != NULL)
                 *tmp = '\0';
         gtk_entry_set_text(GTK_ENTRY(title_entry), title);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/mpg123/http.c xmms-1.2.9/Input/mpg123/http.c
--- xmms-1.2.9-orig/Input/mpg123/http.c	2003-12-07 17:09:49.000000000 +0000
+++ xmms-1.2.9/Input/mpg123/http.c	2004-05-21 15:04:13.000000000 +0100
@@ -742,10 +742,13 @@
 
 char *mpg123_http_get_title(char *url)
 {
+    gchar *basename;
         if (icy_name)
                 return g_strdup(icy_name);
-        if (g_basename(url) && strlen(g_basename(url)) > 0)
-                return g_strdup(g_basename(url));
+    basename = g_path_get_basename( url );
+    if (basename && strlen(basename) > 0)
+        return basename;
+    g_free(basename);
         return g_strdup(url);
 }
 
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/mpg123/mpg123.c xmms-1.2.9/Input/mpg123/mpg123.c
--- xmms-1.2.9-orig/Input/mpg123/mpg123.c	2003-12-06 03:19:05.000000000 +0000
+++ xmms-1.2.9/Input/mpg123/mpg123.c	2004-05-21 15:04:13.000000000 +0100
@@ -549,7 +549,7 @@
  */
 gchar *mpg123_format_song_title(struct id3tag_t *tag, gchar * filename)
 {
-        gchar *ret = NULL, *path, *temp;
+    gchar *ret = NULL, *path, *temp, *basename;
         TitleInput *input;
 
         XMMS_NEW_TITLEINPUT(input);
@@ -568,7 +568,8 @@
         temp = strrchr(path, '/');
         if (temp)
                 *temp = '\0';
-        input->file_name = g_basename(filename);
+    basename = g_path_get_basename( filename );
+    input->file_name = basename;
         input->file_path = g_strdup_printf("%s/", path);
         input->file_ext = extname(filename);
         ret = xmms_get_titlestring(mpg123_cfg.title_override ?
@@ -576,13 +577,14 @@
                                    xmms_get_gentitle_format(), input);
         g_free(input);
         g_free(path);
+    g_free(basename);
 
         if (!ret)
         {
                 /*
                  * Format according to filename.
                  */
-                ret = g_strdup(g_basename(filename));
+        ret = g_path_get_basename(filename);
                 if (extname(ret) != NULL)
                         *(extname(ret) - 1) = '\0';     /* removes period */
         }
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/tonegen/tonegen.c xmms-1.2.9/Input/tonegen/tonegen.c
--- xmms-1.2.9-orig/Input/tonegen/tonegen.c	2003-08-08 18:10:41.000000000 +0100
+++ xmms-1.2.9/Input/tonegen/tonegen.c	2004-05-21 15:04:13.000000000 +0100
@@ -53,8 +53,8 @@
                   "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n"
                   "e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone"),
                 _("Ok"), FALSE, NULL, NULL);
-        gtk_signal_connect(GTK_OBJECT(box), "destroy",
-                           gtk_widget_destroyed, &box);
+    g_signal_connect(box, "destroy",
+                     G_CALLBACK(gtk_widget_destroyed), &box);
 }
 
 static int tone_is_our_file(char *filename)
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/vorbis/configure.c xmms-1.2.9/Input/vorbis/configure.c
--- xmms-1.2.9-orig/Input/vorbis/configure.c	2003-05-19 22:22:06.000000000 +0100
+++ xmms-1.2.9/Input/vorbis/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -220,7 +220,7 @@
                 return;
         }
 
-        vorbis_configurewin = gtk_window_new(GTK_WINDOW_DIALOG);
+    vorbis_configurewin = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(vorbis_configurewin), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &vorbis_configurewin);
         gtk_signal_connect(GTK_OBJECT(vorbis_configurewin), "destroy", GTK_SIGNAL_FUNC(configure_destroy), &vorbis_configurewin);
         gtk_window_set_title(GTK_WINDOW(vorbis_configurewin), _("Ogg Vorbis Configuration"));
@@ -370,7 +370,7 @@
 
         title_tag_override = gtk_check_button_new_with_label(_("Override generic titles"));
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(title_tag_override), vorbis_cfg.tag_override);
-        gtk_signal_connect(GTK_OBJECT(title_tag_override), "clicked", title_tag_override_cb, NULL);
+    g_signal_connect(title_tag_override, "clicked", G_CALLBACK(title_tag_override_cb), NULL);
         gtk_box_pack_start(GTK_BOX(title_tag_vbox), title_tag_override, FALSE, FALSE, 0);
 
         title_tag_box = gtk_hbox_new(FALSE, 5);
@@ -410,7 +410,7 @@
         rg_type_frame = gtk_frame_new(_("ReplayGain Type:"));
         gtk_box_pack_start(GTK_BOX(rg_vbox), rg_type_frame, FALSE, FALSE, 0);
 
-        gtk_signal_connect(GTK_OBJECT(rg_switch), "toggled", rg_switch_cb, rg_type_frame);
+    g_signal_connect(rg_switch, "toggled", G_CALLBACK(rg_switch_cb), rg_type_frame);
         
         rg_type_vbox = gtk_vbox_new(FALSE, 5);
         gtk_container_set_border_width(GTK_CONTAINER(rg_type_vbox), 5);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/vorbis/fileinfo.c xmms-1.2.9/Input/vorbis/fileinfo.c
--- xmms-1.2.9-orig/Input/vorbis/fileinfo.c	2003-11-20 13:35:34.000000000 +0000
+++ xmms-1.2.9/Input/vorbis/fileinfo.c	2004-05-21 15:04:13.000000000 +0100
@@ -238,25 +238,25 @@
         
         vorbis_comment_clear(comment);
         
-        track_name = gtk_entry_get_text(GTK_ENTRY(title_entry));
-        performer = gtk_entry_get_text(GTK_ENTRY(performer_entry));
-        album_name = gtk_entry_get_text(GTK_ENTRY(album_entry));
-        track_number = gtk_entry_get_text(GTK_ENTRY(tracknumber_entry));
-        genre = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(genre_combo)->entry));
-        date = gtk_entry_get_text(GTK_ENTRY(date_entry));
-        user_comment = gtk_entry_get_text(GTK_ENTRY(user_comment_entry));
+    track_name = (gchar *)gtk_entry_get_text(GTK_ENTRY(title_entry));
+    performer = (gchar *)gtk_entry_get_text(GTK_ENTRY(performer_entry));
+    album_name = (gchar *)gtk_entry_get_text(GTK_ENTRY(album_entry));
+    track_number = (gchar *)gtk_entry_get_text(GTK_ENTRY(tracknumber_entry));
+    genre = (gchar *)gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(genre_combo)->entry));
+    date = (gchar *)gtk_entry_get_text(GTK_ENTRY(date_entry));
+    user_comment = (gchar *)gtk_entry_get_text(GTK_ENTRY(user_comment_entry));
 #ifdef ALL_VORBIS_TAGS
-        location = gtk_entry_get_text(GTK_ENTRY(location_entry));
-        description = gtk_entry_get_text(GTK_ENTRY(description_entry));
-        version = gtk_entry_get_text(GTK_ENTRY(version_entry));
-        isrc = gtk_entry_get_text(GTK_ENTRY(isrc_entry));
-        organization = gtk_entry_get_text(GTK_ENTRY(organization_entry));
-        copyright = gtk_entry_get_text(GTK_ENTRY(copyright_entry));
+    location = (gchar *)gtk_entry_get_text(GTK_ENTRY(location_entry));
+    description = (gchar *)gtk_entry_get_text(GTK_ENTRY(description_entry));
+    version = (gchar *)gtk_entry_get_text(GTK_ENTRY(version_entry));
+    isrc = (gchar *)gtk_entry_get_text(GTK_ENTRY(isrc_entry));
+    organization = (gchar *)gtk_entry_get_text(GTK_ENTRY(organization_entry));
+    copyright = (gchar *)gtk_entry_get_text(GTK_ENTRY(copyright_entry));
 #endif
-        rg_track_gain = gtk_entry_get_text(GTK_ENTRY(rg_track_entry));
-        rg_album_gain = gtk_entry_get_text(GTK_ENTRY(rg_album_entry));
-        rg_track_peak = gtk_entry_get_text(GTK_ENTRY(rg_track_peak_entry));
-        rg_album_peak = gtk_entry_get_text(GTK_ENTRY(rg_album_peak_entry));
+    rg_track_gain = (gchar *)gtk_entry_get_text(GTK_ENTRY(rg_track_entry));
+    rg_album_gain = (gchar *)gtk_entry_get_text(GTK_ENTRY(rg_album_entry));
+    rg_track_peak = (gchar *)gtk_entry_get_text(GTK_ENTRY(rg_track_peak_entry));
+    rg_album_peak = (gchar *)gtk_entry_get_text(GTK_ENTRY(rg_album_peak_entry));
 
         comment_list = add_tag(comment_list, "title", track_name);
         comment_list = add_tag(comment_list, "artist", performer);
@@ -451,7 +451,7 @@
                 GtkWidget *table, *bbox, *cancel_button;
                 GtkWidget *save_button, *remove_button;
 
-                window = gtk_window_new(GTK_WINDOW_DIALOG);
+        window = gtk_window_new(GTK_WINDOW_POPUP);
                 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
                 gtk_signal_connect(GTK_OBJECT(window), "destroy", 
                         GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window);
@@ -558,7 +558,7 @@
                 {
                         for (i = 0; i < sizeof(vorbis_genres)/sizeof(*vorbis_genres) ; i++)
                                 genre_list = g_list_prepend(genre_list, _(vorbis_genres[i]));
-                        genre_list = g_list_sort(genre_list, (GCompareFunc)g_strcasecmp);
+            genre_list = g_list_sort(genre_list, (GCompareFunc)g_ascii_strcasecmp);
                 }
                 gtk_combo_set_popdown_strings(GTK_COMBO(genre_combo),
                                               genre_list);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/vorbis/http.c xmms-1.2.9/Input/vorbis/http.c
--- xmms-1.2.9-orig/Input/vorbis/http.c	2003-09-04 21:59:05.000000000 +0100
+++ xmms-1.2.9/Input/vorbis/http.c	2004-05-21 15:04:13.000000000 +0100
@@ -656,9 +656,12 @@
 
 char* vorbis_http_get_title(char *url)
 {
+    gchar *basename;
         if (ice_name)
                 return g_strdup(ice_name);
-        if (g_basename(url) && strlen(g_basename(url)) > 0)
-                return g_strdup(g_basename(url));
+    basename = g_path_get_basename( url );
+    if (basename && strlen(basename) > 0)
+        return basename;
+    g_free( basename );
         return g_strdup(url);
 }
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/vorbis/vorbis.c xmms-1.2.9/Input/vorbis/vorbis.c
--- xmms-1.2.9-orig/Input/vorbis/vorbis.c	2004-01-17 00:11:36.000000000 +0000
+++ xmms-1.2.9/Input/vorbis/vorbis.c	2004-05-21 15:04:13.000000000 +0100
@@ -683,7 +683,7 @@
         temp = strrchr(path, '/');
         if (temp)
                 *temp = '\0';
-        input->file_name = g_basename(fn);
+    input->file_name = (gchar *)g_basename(fn);
         input->file_ext = extname(fn);
         input->file_path = g_strdup_printf("%s/", path);
 
@@ -719,7 +719,7 @@
                 if (!vorbis_is_streaming)
                 {
                         char *tmp;
-                        displaytitle = g_strdup(g_basename(fn));
+            displaytitle = g_path_get_basename(fn);
                         if ((tmp = strrchr(displaytitle, '.')) != NULL)
                                 *tmp = '\0';
                 }
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Input/wav/wav.c xmms-1.2.9/Input/wav/wav.c
--- xmms-1.2.9-orig/Input/wav/wav.c	2003-11-10 21:20:34.000000000 +0000
+++ xmms-1.2.9/Input/wav/wav.c	2004-05-21 15:04:13.000000000 +0100
@@ -198,7 +198,7 @@
         if (temp2)
                 *temp2 = '\0';
 
-        input->file_name = g_basename(filename);
+    input->file_name = (gchar *)g_basename(filename);
         input->file_ext = ext ? ext+1 : NULL;
         input->file_path = g_strdup_printf("%s/", path);
 
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/libxmms/xconvert.c xmms-1.2.9/libxmms/xconvert.c
--- xmms-1.2.9-orig/libxmms/xconvert.c	2003-09-02 18:36:47.000000000 +0100
+++ xmms-1.2.9/libxmms/xconvert.c	2004-05-21 15:04:13.000000000 +0100
@@ -58,6 +58,7 @@
 {
         guint16 *ptr = *data;
         int i;
+    /* This always produces a warning from GCC 3 */
         for (i = 0; i < length; i += 2, ptr++)
                 *ptr = GUINT16_SWAP_LE_BE(*ptr);
 
@@ -68,6 +69,7 @@
 {
         guint16 *ptr = *data;
         int i;
+    /* This always produces a warning from GCC 3 */
         for (i = 0; i < length; i += 2, ptr++)
                 *ptr = GUINT16_SWAP_LE_BE(*ptr) ^ 1 << 15;
 
@@ -78,6 +80,7 @@
 {
         guint16 *ptr = *data;
         int i;
+    /* This always produces a warning from GCC 3 */
         for (i = 0; i < length; i += 2, ptr++)
                 *ptr = GUINT16_SWAP_LE_BE(*ptr ^ 1 << 15);
 
@@ -418,6 +421,7 @@
 {
         guint16 *output = *data, *input = *data;
         int i;
+    /* This always produces a warning from GCC 3 */
         for (i = 0; i < length / 4; i++)
         {
                 guint32 tmp;
@@ -454,6 +458,7 @@
 {
         gint16 *output = *data, *input = *data;
         int i;
+    /* This always produces a warning from GCC 3 */
         for (i = 0; i < length / 4; i++)
         {
                 gint32 tmp;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Output/alsa/configure.c xmms-1.2.9/Output/alsa/configure.c
--- xmms-1.2.9-orig/Output/alsa/configure.c	2004-01-27 23:09:39.000000000 +0000
+++ xmms-1.2.9/Output/alsa/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -222,7 +222,7 @@
                 return;
         }
 
-        configure_win = gtk_window_new(GTK_WINDOW_DIALOG);
+        configure_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(configure_win), "destroy",
                            GTK_SIGNAL_FUNC(gtk_widget_destroyed),
                            &configure_win);
@@ -267,8 +267,8 @@
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(softvolume_toggle_button),
                                      alsa_cfg.soft_volume);
 
-        gtk_signal_connect(GTK_OBJECT(softvolume_toggle_button), "toggled", 
-                           softvolume_toggle_cb, NULL);
+    g_signal_connect(softvolume_toggle_button, "toggled",
+                     G_CALLBACK(softvolume_toggle_cb), NULL);
 
         gtk_box_pack_start(GTK_BOX(mixer_box), softvolume_toggle_button,
                            FALSE, FALSE, 0);
@@ -285,7 +285,7 @@
                                               8, 0);
         
         gtk_signal_connect(GTK_OBJECT(mixer_card_spin), "changed", 
-                           mixer_card_cb, NULL);
+                       G_CALLBACK(mixer_card_cb), NULL);
 
         gtk_box_pack_start(GTK_BOX(mixer_card_box), mixer_card_spin,
                            FALSE, FALSE, 0);
@@ -359,14 +359,14 @@
         gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
         
         ok = gtk_button_new_with_label(_("Ok"));
-        gtk_signal_connect(GTK_OBJECT(ok), "clicked", configure_win_ok_cb, NULL);
+    g_signal_connect(ok, "clicked", G_CALLBACK(configure_win_ok_cb), NULL);
         GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT);
         gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0);
         gtk_widget_grab_default(ok);
         
         cancel = gtk_button_new_with_label(_("Cancel"));
-        gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked",
-                                  gtk_widget_destroy, GTK_OBJECT(configure_win));
+    g_signal_connect_swapped(cancel, "clicked",
+                  G_CALLBACK(gtk_widget_destroy), configure_win);
         GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
         gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);
         
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Output/disk_writer/disk_writer.c xmms-1.2.9/Output/disk_writer/disk_writer.c
--- xmms-1.2.9-orig/Output/disk_writer/disk_writer.c	2002-01-07 22:05:19.000000000 +0000
+++ xmms-1.2.9/Output/disk_writer/disk_writer.c	2004-05-21 15:04:13.000000000 +0100
@@ -116,7 +116,7 @@
 
 static gint disk_open(AFormat fmt, gint rate, gint nch)
 {
-        gchar *filename, *title, *temp;
+    gchar *filename, *title, *temp, *basename;
         gint pos;
 
         written = 0;
@@ -135,15 +135,18 @@
         title = xmms_remote_get_playlist_file(ctrlsocket_get_session_id(), pos);
         if (title != NULL && (temp = strrchr(title, '.')) != NULL)
                 *temp = '\0';
-        if (title == NULL || strlen(g_basename(title)) == 0)
+    basename = g_path_get_basename( title );
+    if (title == NULL || strlen( basename ) == 0)
         {
                 g_free(title);
+        g_free( basename );
                 /* No filename, lets try title instead */
                 title = xmms_remote_get_playlist_title(ctrlsocket_get_session_id(), pos);
                 while (title != NULL && (temp = strchr(title, '/')) != NULL)
                         *temp = '-';
 
-                if (title == NULL || strlen(g_basename(title)) == 0)
+        basename = g_path_get_basename( title );
+        if (title == NULL || strlen(basename) == 0)
                 {
                         g_free(title);
                         /* No title either.  Just set it to something. */
@@ -151,6 +154,7 @@
                 }
         }
         filename = g_strdup_printf("%s/%s.wav", file_path, g_basename(title));
+    g_free( basename );
         g_free(title);
 
         output_file = fopen(filename, "wb");
@@ -338,7 +342,7 @@
 {
         if (!configure_win)
         {
-                configure_win = gtk_window_new(GTK_WINDOW_DIALOG);
+        configure_win = gtk_window_new(GTK_WINDOW_POPUP);
 
                 gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", GTK_SIGNAL_FUNC(configure_destroy), NULL);
                 gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &configure_win);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Output/esd/audio.c xmms-1.2.9/Output/esd/audio.c
--- xmms-1.2.9-orig/Output/esd/audio.c	2004-01-28 21:15:56.000000000 +0000
+++ xmms-1.2.9/Output/esd/audio.c	2004-05-21 15:04:13.000000000 +0100
@@ -321,6 +321,9 @@
 
 }
 
+/* ick. this is defined in mixer.c */
+void esdout_reset_playerid(void);
+
 void esdout_close(void)
 {
         if (!going)
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Output/esd/configure.c xmms-1.2.9/Output/esd/configure.c
--- xmms-1.2.9-orig/Output/esd/configure.c	2003-12-07 02:06:42.000000000 +0000
+++ xmms-1.2.9/Output/esd/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -87,7 +87,7 @@
                 return;
         }
 
-        configure_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    configure_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(configure_win), "destroy",
                            GTK_SIGNAL_FUNC(gtk_widget_destroyed),
                            &configure_win);
@@ -154,8 +154,8 @@
         gtk_box_pack_start(GTK_BOX(server_hbox), server_port_entry,
                            FALSE, FALSE, 0);
 
-        gtk_signal_connect(GTK_OBJECT(server_use_remote), "clicked",
-                           use_remote_cb, server_hbox);
+    g_signal_connect(server_use_remote, "clicked",
+                     G_CALLBACK(use_remote_cb), server_hbox);
 
         gtk_notebook_append_page(GTK_NOTEBOOK(notebook), server_frame,
                                  gtk_label_new(_("Server")));
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Output/OSS/configure.c xmms-1.2.9/Output/OSS/configure.c
--- xmms-1.2.9-orig/Output/OSS/configure.c	2001-08-07 11:56:09.000000000 +0100
+++ xmms-1.2.9/Output/OSS/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -99,7 +99,7 @@
         gtk_widget_set_sensitive(mixer_alt_device_entry, use_alt_device);
 }
 
-static void scan_devices(gchar * type, GtkWidget * option_menu, GtkSignalFunc sigfunc)
+static void scan_devices(gchar * type, GtkWidget * option_menu, GCallback sigfunc)
 {
         GtkWidget *menu, *item;
         FILE *file;
@@ -175,7 +175,7 @@
                 return;
         }
 
-        configure_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    configure_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &configure_win);
         gtk_window_set_title(GTK_WINDOW(configure_win), _("OSS Driver configuration"));
         gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, FALSE, FALSE);
@@ -201,9 +201,9 @@
         adevice = gtk_option_menu_new();
         gtk_box_pack_start(GTK_BOX(adevice_box), adevice, TRUE, TRUE, 0);
 #if defined(HAVE_NEWPCM)
-        scan_devices("Installed devices:",adevice, configure_win_audio_dev_cb);
+    scan_devices("Installed devices:",adevice, G_CALLBACK(configure_win_audio_dev_cb));
 #else
-        scan_devices("Audio devices:", adevice, configure_win_audio_dev_cb);
+    scan_devices("Audio devices:", adevice, G_CALLBACK(configure_win_audio_dev_cb));
 #endif
         audio_device = oss_cfg.audio_device;
         gtk_option_menu_set_history(GTK_OPTION_MENU(adevice), oss_cfg.audio_device);
@@ -211,7 +211,7 @@
         gtk_box_pack_start_defaults(GTK_BOX(adevice_box), audio_alt_box);
         adevice_use_alt_check = gtk_check_button_new_with_label(_("Use alternate device:"));
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(adevice_use_alt_check), oss_cfg.use_alt_audio_device);
-        gtk_signal_connect(GTK_OBJECT(adevice_use_alt_check), "toggled", audio_device_toggled, adevice);
+    g_signal_connect(adevice_use_alt_check, "toggled", G_CALLBACK(audio_device_toggled), adevice);
         gtk_box_pack_start(GTK_BOX(audio_alt_box), adevice_use_alt_check, FALSE, FALSE, 0);
         audio_alt_device_entry = gtk_entry_new();
         if (oss_cfg.alt_audio_device != NULL)
@@ -235,9 +235,9 @@
         mdevice = gtk_option_menu_new();
         gtk_box_pack_start(GTK_BOX(mdevice_box), mdevice, TRUE, TRUE, 0);
 #if defined(HAVE_NEWPCM)
-        scan_devices("Installed devices:",mdevice, configure_win_mixer_dev_cb);
+    scan_devices("Installed devices:",mdevice, G_CALLBACK(configure_win_mixer_dev_cb));
 #else
-        scan_devices("Mixers:", mdevice, configure_win_mixer_dev_cb);
+    scan_devices("Mixers:", mdevice, G_CALLBACK(configure_win_mixer_dev_cb));
 #endif
         mixer_device = oss_cfg.mixer_device;
         gtk_option_menu_set_history(GTK_OPTION_MENU(mdevice), oss_cfg.mixer_device);
@@ -245,7 +245,7 @@
         gtk_box_pack_start_defaults(GTK_BOX(mdevice_box), mixer_alt_box);
         mdevice_use_alt_check = gtk_check_button_new_with_label(_("Use alternate device:"));
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mdevice_use_alt_check), oss_cfg.use_alt_mixer_device);
-        gtk_signal_connect(GTK_OBJECT(mdevice_use_alt_check), "toggled", mixer_device_toggled, mdevice);
+    g_signal_connect(mdevice_use_alt_check, "toggled", G_CALLBACK(mixer_device_toggled), mdevice);
         gtk_box_pack_start(GTK_BOX(mixer_alt_box), mdevice_use_alt_check, FALSE, FALSE, 0);
         mixer_alt_device_entry = gtk_entry_new();
         if (oss_cfg.alt_mixer_device != NULL)
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Visualization/blur_scope/blur_scope.c xmms-1.2.9/Visualization/blur_scope/blur_scope.c
--- xmms-1.2.9-orig/Visualization/blur_scope/blur_scope.c	2000-11-24 14:35:34.000000000 +0000
+++ xmms-1.2.9/Visualization/blur_scope/blur_scope.c	2004-05-21 15:04:13.000000000 +0100
@@ -153,7 +153,7 @@
                 return;
         bscope_read_config();
 
-        window = gtk_window_new(GTK_WINDOW_DIALOG);
+    window = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(window),_("Blur scope"));
         gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
         gtk_widget_realize(window);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Visualization/blur_scope/config.c xmms-1.2.9/Visualization/blur_scope/config.c
--- xmms-1.2.9-orig/Visualization/blur_scope/config.c	2003-05-19 22:22:07.000000000 +0100
+++ xmms-1.2.9/Visualization/blur_scope/config.c	2004-05-21 15:04:13.000000000 +0100
@@ -63,7 +63,7 @@
         color[1]=((gdouble)((bscope_cfg.color %0x10000)/0x100))/256;
         color[2]=((gdouble)(bscope_cfg.color %0x100))/256;
         
-        configure_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    configure_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_container_set_border_width(GTK_CONTAINER(configure_win), 10);
         gtk_window_set_title(GTK_WINDOW(configure_win), _("Color Entry"));
         gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, FALSE, FALSE);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Visualization/opengl_spectrum/configure.c xmms-1.2.9/Visualization/opengl_spectrum/configure.c
--- xmms-1.2.9-orig/Visualization/opengl_spectrum/configure.c	2001-05-31 16:30:10.000000000 +0100
+++ xmms-1.2.9/Visualization/opengl_spectrum/configure.c	2004-05-21 15:04:13.000000000 +0100
@@ -38,7 +38,7 @@
 
         oglspectrum_read_config();
 
-        configure_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    configure_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_container_set_border_width(GTK_CONTAINER(configure_win), 10);
         gtk_window_set_title(GTK_WINDOW(configure_win), _("OpenGL Spectrum configuration"));
         gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, FALSE, FALSE);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/Visualization/sanalyzer/spectrum.c xmms-1.2.9/Visualization/sanalyzer/spectrum.c
--- xmms-1.2.9-orig/Visualization/sanalyzer/spectrum.c	2000-07-31 22:41:05.000000000 +0100
+++ xmms-1.2.9/Visualization/sanalyzer/spectrum.c	2004-05-21 15:04:13.000000000 +0100
@@ -82,7 +82,7 @@
         int i;
         if(window)
                 return;
-        window = gtk_window_new(GTK_WINDOW_DIALOG);
+    window = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(window),_("Spectrum analyzer"));
         gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
         gtk_widget_realize(window);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/wmxmms/wmxmms.c xmms-1.2.9/wmxmms/wmxmms.c
--- xmms-1.2.9-orig/wmxmms/wmxmms.c	2004-01-27 23:09:44.000000000 +0000
+++ xmms-1.2.9/wmxmms/wmxmms.c	2004-05-21 17:38:19.000000000 +0100
@@ -146,12 +146,12 @@
 {
 
         if (button->pressed)
-                gdk_draw_pixmap(w, dock_gc, pixmap,
+        gdk_draw_drawable(w, dock_gc, pixmap,
                                 button->pressed_x, button->pressed_y,
                                 button->x, button->y,
                                 button->width, button->height);
         else
-                gdk_draw_pixmap(w, dock_gc, pixmap,
+        gdk_draw_drawable(w, dock_gc, pixmap,
                                 button->normal_x, button->normal_y,
                                 button->x, button->y,
                                 button->width, button->height);
@@ -171,9 +171,9 @@
 
 void real_draw_volslider(GdkWindow *w)
 {
-        gdk_draw_pixmap(w, dock_gc, pixmap, 48, 65, VOLSLIDER_X, VOLSLIDER_Y,
+    gdk_draw_drawable(w, dock_gc, pixmap, 48, 65, VOLSLIDER_X, VOLSLIDER_Y,
                         VOLSLIDER_WIDTH, VOLSLIDER_HEIGHT);
-        gdk_draw_pixmap(w, dock_gc, pixmap, 42,
+    gdk_draw_drawable(w, dock_gc, pixmap, 42,
                         65 + VOLSLIDER_HEIGHT - volslider_pos,
                         VOLSLIDER_X,
                         VOLSLIDER_Y + VOLSLIDER_HEIGHT - volslider_pos,
@@ -192,19 +192,19 @@
 
         if (seekslider_visible)
         {
-                gdk_draw_pixmap(w, dock_gc, pixmap, 2, 114, 19, 12, 35, 14);
+        gdk_draw_drawable(w, dock_gc, pixmap, 2, 114, 19, 12, 35, 14);
                 if (seekslider_pos < SEEKSLIDER_MAX / 3)
                         slider_x = 44;
                 else if (seekslider_pos < (SEEKSLIDER_MAX * 2) / 3)
                         slider_x = 47;
                 else
                         slider_x = 50;
-                gdk_draw_pixmap(w, dock_gc, pixmap, slider_x, 112,
+        gdk_draw_drawable(w, dock_gc, pixmap, slider_x, 112,
                                 SEEKSLIDER_X + seekslider_pos, SEEKSLIDER_Y, 3,
                                 SEEKSLIDER_HEIGHT);
         }
         else
-                gdk_draw_pixmap(w, dock_gc, pixmap, 2, 100, 19, 12, 35, 14);
+        gdk_draw_drawable(w, dock_gc, pixmap, 2, 100, 19, 12, 35, 14);
 }
 
 void draw_seekslider(void)
@@ -217,9 +217,9 @@
 {
         if (xmms_running)
         {
-                gdk_draw_pixmap(window->window, dock_gc, pixmap,
+        gdk_draw_drawable(window->window, dock_gc, pixmap,
                                 0, 0, 0, 0, 64, 64);
-                gdk_draw_pixmap(icon_win->window, dock_gc, pixmap,
+        gdk_draw_drawable(icon_win->window, dock_gc, pixmap,
                                 0, 0, 0, 0, 64, 64);
                 draw_buttons(button_list);
                 draw_volslider();
@@ -227,9 +227,9 @@
         }
         else
         {
-                gdk_draw_pixmap(window->window, dock_gc, launch_pixmap,
+        gdk_draw_drawable(window->window, dock_gc, launch_pixmap,
                                 0, 0, 0, 0, 64, 64);
-                gdk_draw_pixmap(icon_win->window, dock_gc, launch_pixmap,
+        gdk_draw_drawable(icon_win->window, dock_gc, launch_pixmap,
                                 0, 0, 0, 0, 64, 64);
         }
 }
@@ -583,7 +583,7 @@
                 gtk_tooltips_set_delay(tooltips, 1000);
         }
 
-        window = gtk_window_new(GTK_WINDOW_DIALOG);
+    window = gtk_window_new(GTK_WINDOW_POPUP);
         if (has_geometry)
                 gtk_widget_set_uposition(window, win_x, win_y);
         gtk_widget_set_usize(window, 64, 64);
@@ -618,7 +618,7 @@
         hints.flags = StateHint;
         XSetWMHints(GDK_DISPLAY(), GDK_WINDOW_XWINDOW(window->window), &hints);
 
-        icon_win = gtk_window_new(GTK_WINDOW_DIALOG);
+    icon_win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_widget_set_app_paintable(icon_win, TRUE);
         gtk_widget_set_uposition(icon_win, 0, 0);
         gtk_widget_set_usize(icon_win, 64, 64);
@@ -669,18 +669,18 @@
                 gtk_exit(1);
         }
         g_free(icon_name);
-        gdk_window_get_size(pixmap, &w, &h);
+    gdk_drawable_get_size(pixmap, &w, &h);
         if (w > 64)
                 w = 64;
         if (h > 64)
                 h = 64;
-        gdk_draw_pixmap(launch_pixmap, dock_gc, pixmap,
+    gdk_draw_drawable(launch_pixmap, dock_gc, pixmap,
                         0, 0, 32 - (w / 2), 32 - (h / 2), w, h);
-        gdk_draw_pixmap(launch_mask, mask_gc, mask,
+    gdk_draw_drawable(launch_mask, mask_gc, mask,
                         0, 0, 32 - (w / 2), 32 - (h / 2), w, h);
-        gdk_gc_unref(mask_gc);
-        gdk_pixmap_unref(pixmap);
-        gdk_bitmap_unref(mask);
+    g_object_unref(mask_gc);
+    g_object_unref(pixmap);
+    g_object_unref(mask);
 
         gtk_widget_shape_combine_mask(window, launch_mask, 0, 0);
         gtk_widget_shape_combine_mask(icon_win, launch_mask, 0, 0);
@@ -692,7 +692,7 @@
         gdk_window_set_icon(leader, icon_win->window, NULL, NULL);
         gdk_window_reparent(icon_win->window, leader, 0, 0);
 
-        gdk_window_unref(leader);
+    g_object_unref(leader);
         gtk_widget_show(icon_win);
         gtk_widget_show(window);
         timeout_tag = gtk_timeout_add(100, timeout_func, NULL);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/about.c xmms-1.2.9/xmms/about.c
--- xmms-1.2.9-orig/xmms/about.c	2004-01-17 00:41:21.000000000 +0000
+++ xmms-1.2.9/xmms/about.c	2004-05-21 15:04:13.000000000 +0100
@@ -281,7 +281,7 @@
         if (about_window)
                 return;
         
-        about_window = gtk_window_new(GTK_WINDOW_DIALOG);
+    about_window = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(about_window), _("About XMMS"));
         gtk_window_set_policy(GTK_WINDOW(about_window), FALSE, TRUE, FALSE);
         gtk_container_set_border_width(GTK_CONTAINER(about_window), 10);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/dock.c xmms-1.2.9/xmms/dock.c
--- xmms-1.2.9-orig/xmms/dock.c	2001-03-08 05:48:38.000000000 +0000
+++ xmms-1.2.9/xmms/dock.c	2004-05-21 17:46:18.000000000 +0100
@@ -71,7 +71,7 @@
         for (dnode = dlist; dnode; dnode = g_list_next(dnode))
         {
                 dw = dnode->data;
-                gdk_window_get_size(dw->w->window, &nw, &nh);
+        gdk_drawable_get_size(dw->w->window, &nw, &nh);
 
 
                 nx = dw->offset_x + *off_x + x;
@@ -97,7 +97,7 @@
 
                         w = GTK_WIDGET(wnode->data);
                         dock_get_widget_pos(w, &sx, &sy);
-                        gdk_window_get_size(w->window, &sw, &sh);
+            gdk_drawable_get_size(w->window, &sw, &sh);
                         
                         nx = dw->offset_x + *off_x + x;
                         ny = dw->offset_y + *off_y + y;
@@ -141,7 +141,7 @@
   
 
         dock_get_widget_pos(w, &w_x, &w_y);
-        gdk_window_get_size(w->window,&w_width,&w_height);
+    gdk_drawable_get_size(w->window,&w_width,&w_height);
         if (!dlist)
         {
                 dwin = g_malloc0(sizeof(DockedWindow));
@@ -156,7 +156,7 @@
                         continue;
 
                 dock_get_widget_pos(GTK_WIDGET(node->data), &t_x, &t_y);
-                gdk_window_get_size(GTK_WIDGET(node->data)->window, &t_width, &t_height);
+        gdk_drawable_get_size(GTK_WIDGET(node->data)->window, &t_width, &t_height);
                 if (is_docked(w_x, w_y, w_width, w_height, t_x, t_y, t_width, t_height))
                 {
                         dwin = g_malloc(sizeof(DockedWindow));
@@ -202,7 +202,7 @@
         DockedWindow *dw;
 
         dock_get_widget_pos(widget, &x, &y);
-        gdk_window_get_size(widget->window, &w, &h);
+    gdk_drawable_get_size(widget->window, &w, &h);
  
   
         for (node = list; node;)
@@ -211,7 +211,7 @@
 
                 dw = node->data;
                 dock_get_widget_pos(dw->w, &dx, &dy);
-                gdk_window_get_size(dw->w->window, &dwidth,&dheight);
+        gdk_drawable_get_size(dw->w->window, &dwidth,&dheight);
                 if (is_docked(x, y, w, h, dx, dy, dwidth, dheight) &&
                     ((dx + dwidth) > x && dx < (x + w)))
                 {
@@ -241,14 +241,14 @@
         GList *node;
         
         dock_get_widget_pos(widget, &x, &y);
-        gdk_window_get_size(widget->window, &w, &h);
+    gdk_drawable_get_size(widget->window, &w, &h);
         for(node = winlist; node; node = g_list_next(node))
         {
                 DockedWindow *dw = node->data;
                 if (g_list_find_custom(shade_list, dw, (GCompareFunc)docked_list_compare))
                         continue;
                 dock_get_widget_pos(dw->w, &dx, &dy);
-                gdk_window_get_size(dw->w->window, &dwidth, &dheight);
+        gdk_drawable_get_size(dw->w->window, &dwidth, &dheight);
 
                 /* FIXME. Is the is_docked() necessary? */
                 if (is_docked(x, y, w, h, dx, dy, dwidth, dheight) &&
@@ -263,12 +263,24 @@
 
 static void dock_window_resize(GtkWidget *widget, int new_w, int new_h, int w, int h)
 {
-        gdk_window_set_hints(widget->window, 0, 0, MIN(w, new_w), MIN(h, new_h),
-                             MAX(w, new_w), MAX (h, new_h),
-                             GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
+  GdkGeometry geom;
+
+  geom.min_width = MIN(w, new_w);
+  geom.min_height = MIN(h, new_h);
+  geom.max_width = MAX(w, new_w);
+  geom.max_height = MAX(h, new_h);
+
+  gtk_window_set_geometry_hints( GTK_WINDOW(widget->window), widget, &geom,
+                                 (GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE));
+
         gdk_window_resize(widget->window, new_w, new_h);
-        gdk_window_set_hints(widget->window, 0, 0, new_w, new_h, new_w, new_h,
-                             GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
+
+  geom.min_width = new_w;
+  geom.min_height = new_h;
+  geom.max_width = new_w;
+  geom.max_height = new_h;
+  gtk_window_set_geometry_hints( GTK_WINDOW(widget->window), widget, &geom,
+                                 (GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE));
 }
 
 void dock_shade(GList *window_list, GtkWidget *widget, gint new_h)
@@ -278,7 +290,7 @@
         DockedWindow *dw;
 
         dock_get_widget_pos(widget, &x, &y);
-        gdk_window_get_size(widget->window, &w, &h);
+    gdk_drawable_get_size(widget->window, &w, &h);
 
         if (cfg.show_wm_decorations)
         {
@@ -301,7 +313,7 @@
                         if (dw->w == widget)
                                 continue;
                         dock_get_widget_pos(dw->w, &dx, &dy);
-                        gdk_window_get_size(dw->w->window, &dwidth, &dheight);
+            gdk_drawable_get_size(dw->w->window, &dwidth, &dheight);
                         if ((dy >= y) &&
                             ((dy + off_y + dheight) > gdk_screen_height()))
                                 off_y -= (dy + off_y + dheight) - gdk_screen_height();
@@ -338,7 +350,7 @@
                         dw = node->data;
 
                         dock_get_widget_pos(dw->w, &dx, &dy);
-                        gdk_window_get_size(dw->w->window, &dwidth,&dheight);
+            gdk_drawable_get_size(dw->w->window, &dwidth,&dheight);
                         /*
                          * Find windows that are directly docked to this window,
                          * move it, and any windows docked to that window again
@@ -374,7 +386,7 @@
         DockedWindow *dw;
 
         dock_get_widget_pos(widget,&x,&y);
-        gdk_window_get_size(widget->window, &w,&h);
+    gdk_drawable_get_size(widget->window, &w,&h);
  
   
         for(node = list; node;)
@@ -382,7 +394,7 @@
                 gint dx, dy, dwidth, dheight;
                 dw = node->data;
                 dock_get_widget_pos(dw->w, &dx, &dy);
-                gdk_window_get_size(dw->w->window, &dwidth,&dheight);
+        gdk_drawable_get_size(dw->w->window, &dwidth,&dheight);
                 if(is_docked(x,y,w,h,dx,dy,dwidth,dheight))
                 {
                         
@@ -404,7 +416,7 @@
         DockedWindow *dw;
 
         dock_get_widget_pos(widget, &x, &y);
-        gdk_window_get_size(widget->window, &w, &h);
+    gdk_drawable_get_size(widget->window, &w, &h);
  
   
         for(node = list; node;)
@@ -412,7 +424,7 @@
                 gint dx, dy, dwidth, dheight;
                 dw = node->data;
                 dock_get_widget_pos(dw->w, &dx, &dy);
-                gdk_window_get_size(dw->w->window, &dwidth,&dheight);
+        gdk_drawable_get_size(dw->w->window, &dwidth,&dheight);
                 if (is_docked(x, y, w, h, dx, dy, dwidth, dheight))
                 {
                         if (dx + offset_x + dwidth > gdk_screen_width())
@@ -444,7 +456,7 @@
         DockedWindow *dw;
         
         dock_get_widget_pos(widget, &x, &y);
-        gdk_window_get_size(widget->window, &w, &h);
+    gdk_drawable_get_size(widget->window, &w, &h);
         if (cfg.show_wm_decorations)
         {
                 dock_window_resize(widget, new_w, new_h, w, h);
@@ -462,7 +474,7 @@
                 if(dw->w != widget)
                 {
                         dock_get_widget_pos(dw->w, &dx, &dy);
-                        gdk_window_get_size(dw->w->window,&dwidth,&dheight);
+            gdk_drawable_get_size(dw->w->window,&dwidth,&dheight);
                         if(is_docked(x, y, w, h, dx, dy, dwidth, dheight))
                                 dlist = g_list_append(dlist, dw);
                         else
@@ -475,7 +487,7 @@
                 gint doff_x, doff_y;
                 dw = node->data;
                 dock_get_widget_pos(dw->w, &dx, &dy);
-                gdk_window_get_size(dw->w->window,&dwidth,&dheight);
+        gdk_drawable_get_size(dw->w->window,&dwidth,&dheight);
                 if (dx - x - w == 0)
                         doff_x = (x + off_x + new_w) - dx;
                 else
@@ -609,7 +621,8 @@
         if (!GTK_WIDGET_VISIBLE(w))
                 return FALSE;
         
-        gdk_window_get_deskrelative_origin(w->window, &x, &y);
+    /* not 100% sure this is correct */
+    gdk_window_get_root_origin(w->window, &x, &y);
         gtk_object_set_data(GTK_OBJECT(w), "window_x", GINT_TO_POINTER(x));
         gtk_object_set_data(GTK_OBJECT(w), "window_y", GINT_TO_POINTER(y));
 
@@ -619,7 +632,7 @@
 GList *dock_add_window(GList *list, GtkWidget *w)
 {
         list = g_list_append(list, w);
-        gtk_signal_connect(GTK_OBJECT(w), "configure_event", GTK_SIGNAL_FUNC(configure_event), NULL);
+    g_signal_connect(w, "configure_event", G_CALLBACK(configure_event), NULL);
         return list;
 }
         
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/effect.c xmms-1.2.9/xmms/effect.c
--- xmms-1.2.9-orig/xmms/effect.c	2003-05-19 22:22:07.000000000 +0100
+++ xmms-1.2.9/xmms/effect.c	2004-05-21 15:04:13.000000000 +0100
@@ -151,12 +151,12 @@
 
         if (g_list_length(node))
         {
-                enalist = g_strdup(g_basename(((EffectPlugin *) node->data)->filename));
+        enalist = g_path_get_basename(((EffectPlugin *) node->data)->filename);
                 node = node->next;
                 while (node)
                 {
                         temp = enalist;
-                        temp2 = g_strdup(g_basename(((EffectPlugin *) node->data)->filename));
+            temp2 = g_path_get_basename(((EffectPlugin *) node->data)->filename);
                         enalist = g_strconcat(temp, ",", temp2, NULL);
                         g_free(temp);
                         g_free(temp2);
@@ -168,7 +168,8 @@
 
 void effect_enable_from_stringified_list(gchar * list)
 {
-        gchar **plugins, *base;
+    gchar **plugins;
+    gchar *base;
         GList *node;
         gint i;
         EffectPlugin *ep;
@@ -181,7 +182,7 @@
                 node = ep_data->effect_list;
                 while (node)
                 {
-                        base = g_basename(((EffectPlugin *) node->data)->filename);
+            base = g_path_get_basename(((EffectPlugin *) node->data)->filename);
                         if (!strcmp(plugins[i], base))
                         {
                                 ep = node->data;
@@ -190,6 +191,7 @@
                                         ep->init();
                         }
                         node = node->next;
+            g_free( base );
                 }
         }
         g_strfreev(plugins);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/eq_slider.c xmms-1.2.9/xmms/eq_slider.c
--- xmms-1.2.9-orig/xmms/eq_slider.c	2000-08-05 15:10:37.000000000 +0100
+++ xmms-1.2.9/xmms/eq_slider.c	2004-05-21 15:04:13.000000000 +0100
@@ -164,9 +164,9 @@
         es->es_widget.width = 14;
         es->es_widget.height = 63;
         es->es_widget.visible = TRUE;
-        es->es_widget.button_press_cb = GTK_SIGNAL_FUNC(eqslider_button_press_cb);
-        es->es_widget.button_release_cb = GTK_SIGNAL_FUNC(eqslider_button_release_cb);
-        es->es_widget.motion_cb = GTK_SIGNAL_FUNC(eqslider_motion_cb);
+    es->es_widget.button_press_cb = eqslider_button_press_cb;
+    es->es_widget.button_release_cb = eqslider_button_release_cb;
+    es->es_widget.motion_cb = eqslider_motion_cb;
         es->es_widget.draw = eqslider_draw;
         add_widget(wlist, es);
         return es;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/equalizer.c xmms-1.2.9/xmms/equalizer.c
--- xmms-1.2.9-orig/xmms/equalizer.c	2004-01-11 16:27:27.000000000 +0000
+++ xmms-1.2.9/xmms/equalizer.c	2004-05-21 17:07:14.000000000 +0100
@@ -259,11 +259,11 @@
                 {
                         if (force)
                         {
-                                img = gdk_image_get(equalizerwin_bg, 0, 0, 275, 116);
+                img = gdk_drawable_get_image(equalizerwin_bg, 0, 0, 275, 116);
                                 img2 = create_dblsize_image(img);
                                 gdk_draw_image(equalizerwin_bg_dblsize, equalizerwin_gc, img2, 0, 0, 0, 0, 550, 232);
-                                gdk_image_destroy(img2);
-                                gdk_image_destroy(img);
+                g_object_unref(img2);
+                g_object_unref(img);
                         }
                         else
                         {
@@ -273,11 +273,11 @@
                                         w = (Widget *) wl->data;
                                         if (w->redraw && w->visible)
                                         {
-                                                img = gdk_image_get(equalizerwin_bg, w->x, w->y, w->width, w->height);
+                        img = gdk_drawable_get_image(equalizerwin_bg, w->x, w->y, w->width, w->height);
                                                 img2 = create_dblsize_image(img);
                                                 gdk_draw_image(equalizerwin_bg_dblsize, equalizerwin_gc, img2, 0, 0, w->x << 1, w->y << 1, w->width << 1, w->height << 1);
-                                                gdk_image_destroy(img2);
-                                                gdk_image_destroy(img);
+                        g_object_unref(img2);
+                        g_object_unref(img);
                                                 w->redraw = FALSE;
                                         }
                                         wl = wl->next;
@@ -368,7 +368,7 @@
         if (grab)
                 gdk_pointer_grab(equalizerwin->window, FALSE,
                                  GDK_BUTTON_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
-                                 GDK_NONE, GDK_NONE, GDK_CURRENT_TIME);
+                 (GdkWindow *)GDK_NONE, (GdkCursor *)GDK_NONE, GDK_CURRENT_TIME);
 }
 
 void equalizerwin_motion(GtkWidget * widget, GdkEventMotion * event, gpointer callback_data)
@@ -444,7 +444,7 @@
                         mainwin_set_balance_diff(4);
                         break;
                 default:
-                        if (!gtk_accel_group_activate(equalizerwin_accel,
+            if (!gtk_accel_groups_activate(G_OBJECT(equalizerwin_accel),
                                                       event->keyval,
                                                       event->state))
                                 gtk_widget_event(mainwin, (GdkEvent*) event);
@@ -463,9 +463,14 @@
                 gdk_window_get_root_origin(window->window,
                                            &cfg.equalizer_x, &cfg.equalizer_y);
         else
+#ifdef GDK_DISABLE_DEPRECATED
+      ;
+#     warning "What's this?"
+#else
                 gdk_window_get_deskrelative_origin(window->window,
                                                    &cfg.equalizer_x,
                                                    &cfg.equalizer_y);
+#endif
         return FALSE;
 }
 
@@ -662,7 +667,7 @@
 
 static void equalizerwin_create_gtk(void)
 {
-        equalizerwin = gtk_window_new(GTK_WINDOW_DIALOG);
+    equalizerwin = gtk_window_new(GTK_WINDOW_POPUP);
         dock_add_window(dock_window_list, equalizerwin);
         gtk_widget_set_app_paintable(equalizerwin, TRUE);
         gtk_window_set_policy(GTK_WINDOW(equalizerwin), FALSE, FALSE, TRUE);
@@ -956,7 +961,7 @@
 {
         gchar *text;
 
-        text = gtk_entry_get_text(GTK_ENTRY(equalizerwin_save_entry));
+    text = (gchar *)gtk_entry_get_text(GTK_ENTRY(equalizerwin_save_entry));
         if (strlen(text) != 0)
                 equalizer_presets = equalizerwin_save_preset(equalizer_presets, text, "eq.preset");
         gtk_widget_destroy(equalizerwin_save_window);
@@ -1019,7 +1024,7 @@
 {
         gchar *text;
 
-        text = gtk_entry_get_text(GTK_ENTRY(equalizerwin_save_auto_entry));
+    text = (gchar *)gtk_entry_get_text(GTK_ENTRY(equalizerwin_save_auto_entry));
         if (strlen(text) != 0)
                 equalizer_auto_presets = equalizerwin_save_preset(equalizer_auto_presets, text, "eq.auto_preset");
         gtk_widget_destroy(equalizerwin_save_auto_window);
@@ -1085,7 +1090,7 @@
         if (util_filebrowser_is_dir(filesel))
                 return;
 
-        filename = gtk_file_selection_get_filename(filesel);
+    filename = (gchar *)gtk_file_selection_get_filename(filesel);
 
         if ((cfgfile = xmms_cfg_open_file(filename)) != NULL)
         {
@@ -1097,7 +1102,7 @@
 
 static void equalizerwin_import_winamp_filesel_ok(GtkWidget * w, GtkFileSelection * filesel)
 {
-        gchar *filename;
+    const gchar *filename;
         FILE *file;
 
         if (util_filebrowser_is_dir(filesel))
@@ -1117,7 +1122,7 @@
 
 static void equalizerwin_load_winamp_filesel_ok(GtkWidget * w, GtkFileSelection * filesel)
 {
-        gchar *filename;
+    const gchar *filename;
         FILE *file;
 
         if (util_filebrowser_is_dir(filesel))
@@ -1140,7 +1145,7 @@
         if (util_filebrowser_is_dir(filesel))
                 return;
 
-        filename = gtk_file_selection_get_filename(filesel);
+    filename = (gchar *)gtk_file_selection_get_filename(filesel);
 
         cfgfile = xmms_cfg_new();
         xmms_cfg_write_float(cfgfile, "Equalizer preset", "Preamp", eqslider_get_position(equalizerwin_preamp));
@@ -1158,7 +1163,8 @@
 
 static void equalizerwin_save_winamp_filesel_ok(GtkWidget * w, GtkFileSelection * filesel)
 {
-        gchar *filename, name[257];
+    const gchar *filename;
+    gchar name[257];
         FILE *file;
         gint i;
         guchar bands[11];
@@ -1206,7 +1212,7 @@
         char *preset_text[1];
         GList *node;
 
-        *window = gtk_window_new(GTK_WINDOW_DIALOG);
+    *window = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_signal_connect(GTK_OBJECT(*window), "destroy",
                            GTK_SIGNAL_FUNC(gtk_widget_destroyed), window);
         gtk_window_set_transient_for(GTK_WINDOW(*window), GTK_WINDOW(equalizerwin));
@@ -1290,13 +1296,13 @@
         {
                 case EQUALIZER_PRESETS_LOAD_PRESET:
                         if (!equalizerwin_load_window)
-                                equalizerwin_create_list_window(equalizer_presets, _("Load preset"), &equalizerwin_load_window, GTK_SELECTION_SINGLE, NULL, _("Ok"), _("Cancel"), equalizerwin_load_ok, equalizerwin_load_select);
+                equalizerwin_create_list_window(equalizer_presets, _("Load preset"), &equalizerwin_load_window, GTK_SELECTION_SINGLE, NULL, _("Ok"), _("Cancel"), GTK_SIGNAL_FUNC(equalizerwin_load_ok), GTK_SIGNAL_FUNC(equalizerwin_load_select));
                         else
                                 gdk_window_raise(equalizerwin_load_window->window);
                         break;
                 case EQUALIZER_PRESETS_LOAD_AUTOPRESET:
                         if (!equalizerwin_load_auto_window)
-                                equalizerwin_create_list_window(equalizer_auto_presets, _("Load auto-preset"), &equalizerwin_load_auto_window, GTK_SELECTION_SINGLE, NULL, _("Ok"), _("Cancel"), equalizerwin_load_auto_ok, equalizerwin_load_auto_select);
+                equalizerwin_create_list_window(equalizer_auto_presets, _("Load auto-preset"), &equalizerwin_load_auto_window, GTK_SELECTION_SINGLE, NULL, _("Ok"), _("Cancel"), GTK_SIGNAL_FUNC(equalizerwin_load_auto_ok), GTK_SIGNAL_FUNC(equalizerwin_load_auto_select));
                         else
                                 gdk_window_raise(equalizerwin_load_auto_window->window);
                         break;
@@ -1360,7 +1366,7 @@
         
                 case EQUALIZER_PRESETS_SAVE_PRESET:
                         if (!equalizerwin_save_window)
-                                equalizerwin_create_list_window(equalizer_presets, _("Save preset"), &equalizerwin_save_window, GTK_SELECTION_SINGLE, &equalizerwin_save_entry, _("Ok"), _("Cancel"), equalizerwin_save_ok, equalizerwin_save_select);
+                equalizerwin_create_list_window(equalizer_presets, _("Save preset"), &equalizerwin_save_window, GTK_SELECTION_SINGLE, &equalizerwin_save_entry, _("Ok"), _("Cancel"), GTK_SIGNAL_FUNC(equalizerwin_save_ok), GTK_SIGNAL_FUNC(equalizerwin_save_select));
                         else
                                 gdk_window_raise(equalizerwin_save_window->window);
                         break;
@@ -1369,12 +1375,14 @@
                         gchar *name;
 
                         if (!equalizerwin_save_auto_window)
-                                equalizerwin_create_list_window(equalizer_auto_presets, _("Save auto-preset"), &equalizerwin_save_auto_window, GTK_SELECTION_SINGLE, &equalizerwin_save_auto_entry, _("Ok"), _("Cancel"), equalizerwin_save_auto_ok, equalizerwin_save_auto_select);
+                equalizerwin_create_list_window(equalizer_auto_presets, _("Save auto-preset"), &equalizerwin_save_auto_window, GTK_SELECTION_SINGLE, &equalizerwin_save_auto_entry, _("Ok"), _("Cancel"), GTK_SIGNAL_FUNC(equalizerwin_save_auto_ok), GTK_SIGNAL_FUNC(equalizerwin_save_auto_select));
                         else
                                 gdk_window_raise(equalizerwin_save_auto_window->window);
                         if ((name = playlist_get_filename(get_playlist_position())) != NULL)
                         {
-                                gtk_entry_set_text(GTK_ENTRY(equalizerwin_save_auto_entry), g_basename(name));
+                char *basename = g_path_get_basename( name );
+                gtk_entry_set_text(GTK_ENTRY(equalizerwin_save_auto_entry), basename );
+                g_free(basename);
                                 g_free(name);
                         }
                         break;
@@ -1423,11 +1431,11 @@
                 }
                 case EQUALIZER_PRESETS_DELETE_PRESET:
                         if (!equalizerwin_delete_window)
-                                equalizerwin_create_list_window(equalizer_presets, _("Delete preset"), &equalizerwin_delete_window, GTK_SELECTION_EXTENDED, NULL, _("Delete"), _("Close"), equalizerwin_delete_delete, NULL);
+                equalizerwin_create_list_window(equalizer_presets, _("Delete preset"), &equalizerwin_delete_window, GTK_SELECTION_EXTENDED, NULL, _("Delete"), _("Close"), GTK_SIGNAL_FUNC(equalizerwin_delete_delete), NULL);
                         break;
                 case EQUALIZER_PRESETS_DELETE_AUTOPRESET:
                         if (!equalizerwin_delete_auto_window)
-                                equalizerwin_create_list_window(equalizer_auto_presets, _("Delete auto-preset"), &equalizerwin_delete_auto_window, GTK_SELECTION_EXTENDED, NULL, _("Delete"), _("Close"), equalizerwin_delete_auto_delete, NULL);
+                equalizerwin_create_list_window(equalizer_auto_presets, _("Delete auto-preset"), &equalizerwin_delete_auto_window, GTK_SELECTION_EXTENDED, NULL, _("Delete"), _("Close"), GTK_SIGNAL_FUNC(equalizerwin_delete_auto_delete), NULL);
                         break;
                 case EQUALIZER_PRESETS_CONFIGURE:
                         if (!equalizerwin_configure_window)
@@ -1443,7 +1451,7 @@
 
 void equalizerwin_load_auto_preset(gchar * filename)
 {
-        gchar *presetfilename, *directory;
+    gchar *presetfilename, *directory, *basename;
         ConfigFile *cfgfile;
         
         if (!cfg.equalizer_autoload)
@@ -1465,11 +1473,13 @@
                 return;
         }
 
-        directory = g_dirname(filename);
+    directory = g_path_get_dirname(filename);
         g_free(presetfilename);
         presetfilename = g_strdup_printf("%s/%s", directory, cfg.eqpreset_default_file);
         g_free(directory);
 
+    basename = g_path_get_basename( filename );
+
         /*
          * Try to find a per directory preset file
          */
@@ -1482,8 +1492,9 @@
         /*
          * Fall back to the oldstyle auto presets
          */
-        else if (!equalizerwin_load_preset(equalizer_auto_presets, g_basename(filename)))
+    else if (!equalizerwin_load_preset(equalizer_auto_presets, basename))
                 equalizerwin_load_preset(equalizer_presets, "Default");
+    g_free( basename );
         g_free(presetfilename);
 }
         
@@ -1559,7 +1570,7 @@
         GtkWidget *vbox, *hbox, *instructions;
         GtkWidget *ok, *cancel, *apply;
 
-        window = gtk_window_new(GTK_WINDOW_DIALOG);
+    window = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(window), _("Configure Equalizer"));
         gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
         gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(mainwin));
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/fullscreen.c xmms-1.2.9/xmms/fullscreen.c
--- xmms-1.2.9-orig/xmms/fullscreen.c	2001-05-31 17:01:41.000000000 +0100
+++ xmms-1.2.9/xmms/fullscreen.c	2004-05-21 15:04:13.000000000 +0100
@@ -270,7 +270,7 @@
 
                         /* Save the old position/size */
                         gdk_window_get_root_origin(fwin->window->window, &fwin->ox, &fwin->oy);
-                        gdk_window_get_size(fwin->window->window, &fwin->owidth, &fwin->oheight);
+            gdk_drawable_get_size(fwin->window->window, &fwin->owidth, &fwin->oheight);
 
                         /* Move it. */
                         gdk_window_move_resize(fwin->window->window, 0, 0,
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/general.c xmms-1.2.9/xmms/general.c
--- xmms-1.2.9-orig/xmms/general.c	1999-12-15 10:52:57.000000000 +0000
+++ xmms-1.2.9/xmms/general.c	2004-05-21 15:04:13.000000000 +0100
@@ -67,12 +67,12 @@
 
         if (g_list_length(node))
         {
-                enalist = g_strdup(g_basename(((GeneralPlugin *) node->data)->filename));
+        enalist = g_path_get_basename(((GeneralPlugin *) node->data)->filename);
                 node = node->next;
                 while (node)
                 {
                         temp = enalist;
-                        temp2 = g_strdup(g_basename(((GeneralPlugin *) node->data)->filename));
+            temp2 = g_path_get_basename(((GeneralPlugin *) node->data)->filename);
                         enalist = g_strconcat(temp, ",", temp2, NULL);
                         g_free(temp);
                         g_free(temp2);
@@ -84,7 +84,8 @@
 
 void general_enable_from_stringified_list(gchar * list)
 {
-        gchar **plugins, *base;
+    gchar **plugins;
+    gchar *base;
         GList *node;
         gint i;
         GeneralPlugin *gp;
@@ -97,7 +98,7 @@
                 node = gp_data->general_list;
                 while (node)
                 {
-                        base = g_basename(((GeneralPlugin *) node->data)->filename);
+            base = g_path_get_basename(((GeneralPlugin *) node->data)->filename);
                         if (!strcmp(plugins[i], base))
                         {
                                 gp = node->data;
@@ -106,6 +107,7 @@
                                         gp->init();
                         }
                         node = node->next;
+            g_free( base );
                 }
         }
         g_strfreev(plugins);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/hints.c xmms-1.2.9/xmms/hints.c
--- xmms-1.2.9-orig/xmms/hints.c	2004-01-28 18:55:23.000000000 +0000
+++ xmms-1.2.9/xmms/hints.c	2004-05-21 15:04:13.000000000 +0100
@@ -74,6 +74,8 @@
                 set_always_func(mainwin, always);
                 set_always_func(equalizerwin, always);
                 set_always_func(playlistwin, always);
+    } else {
+        fprintf( stderr, "*** warning: no set_always_func\n" );
         }
 }
 
@@ -89,6 +91,8 @@
                 set_sticky_func(mainwin, sticky);
                 set_sticky_func(equalizerwin, sticky);
                 set_sticky_func(playlistwin, sticky);
+    } else {
+        fprintf( stderr, "*** warning: no set_sticky_func\n" );
         }
 }
 
@@ -105,7 +109,7 @@
 static void gnome_wm_set_skip_taskbar(GtkWidget *widget)
 {
         long data[1];
-        Atom xa_win_hints = gdk_atom_intern("_WIN_HINTS", FALSE);
+    Atom xa_win_hints = gdk_x11_atom_to_xatom(gdk_atom_intern("_WIN_HINTS", FALSE));
 
         data[0] = WIN_HINTS_SKIP_TASKBAR;
         XChangeProperty(GDK_DISPLAY(), GDK_WINDOW_XWINDOW(widget->window),
@@ -117,7 +121,7 @@
 {
         XEvent xev;
         long layer = WIN_LAYER_ONTOP;
-        Atom xa_win_layer = gdk_atom_intern("_WIN_LAYER", FALSE);
+    Atom xa_win_layer = gdk_x11_atom_to_xatom(gdk_atom_intern("_WIN_LAYER", FALSE));
 
         if (always == FALSE)
                 layer = WIN_LAYER_NORMAL;
@@ -150,7 +154,7 @@
 {
         XEvent xev;
         long state = 0;
-        Atom xa_win_state = gdk_atom_intern("_WIN_STATE", FALSE);
+    Atom xa_win_state = gdk_x11_atom_to_xatom(gdk_atom_intern("_WIN_STATE", FALSE));
 
         if (sticky)
                 state = WIN_STATE_STICKY;
@@ -190,7 +194,7 @@
 
         gdk_error_trap_push();
 
-        support_check = gdk_atom_intern("_WIN_SUPPORTING_WM_CHECK", FALSE);
+    support_check = gdk_x11_atom_to_xatom(gdk_atom_intern("_WIN_SUPPORTING_WM_CHECK", FALSE));
         
         p = XGetWindowProperty(GDK_DISPLAY(), GDK_ROOT_WINDOW(), support_check,
                                0, 1, False, XA_CARDINAL, &r_type, &r_format,
@@ -228,7 +232,7 @@
         gboolean ret = FALSE;
 
         gdk_error_trap_push();
-        support_check = gdk_atom_intern("_NET_SUPPORTING_WM_CHECK", FALSE);
+    support_check = gdk_x11_atom_to_xatom(gdk_atom_intern("_NET_SUPPORTING_WM_CHECK", FALSE));
 
         p = XGetWindowProperty(GDK_DISPLAY(), GDK_ROOT_WINDOW(), support_check,
                                0, 1, False, XA_WINDOW, &r_type, &r_format,
@@ -266,8 +270,8 @@
         if (state == FALSE)
                 set = _NET_WM_STATE_REMOVE;
 
-        type = gdk_atom_intern("_NET_WM_STATE", FALSE);
-        property = gdk_atom_intern(atom, FALSE);
+    type = gdk_x11_atom_to_xatom(gdk_atom_intern("_NET_WM_STATE", FALSE));
+    property = gdk_x11_atom_to_xatom(gdk_atom_intern(atom, FALSE));
 
         xev.type = ClientMessage;
         xev.xclient.type = ClientMessage;
@@ -293,7 +297,7 @@
                 unsigned long count, bytes_remain;
                 unsigned char* prop;
                 Atom r_type;
-                Atom current = gdk_atom_intern("_NET_CURRENT_DESKTOP", FALSE);
+        Atom current = gdk_x11_atom_to_xatom(gdk_atom_intern("_NET_CURRENT_DESKTOP", FALSE));
 
                 p = XGetWindowProperty(GDK_DISPLAY(), GDK_ROOT_WINDOW(), current,
                                        0, 1, False, XA_CARDINAL, &r_type, &r_format,
@@ -312,7 +316,7 @@
         xev.type = ClientMessage;
         xev.xclient.type = ClientMessage;
         xev.xclient.window = GDK_WINDOW_XWINDOW(window->window);
-        xev.xclient.message_type = gdk_atom_intern("_NET_WM_DESKTOP", FALSE);
+    xev.xclient.message_type = gdk_x11_atom_to_xatom(gdk_atom_intern("_NET_WM_DESKTOP", FALSE));
         xev.xclient.format = 32;
         xev.xclient.data.l[0] = current_desktop;
         
@@ -348,7 +352,7 @@
 
         gdk_pointer_ungrab(GDK_CURRENT_TIME);
 
-        type = gdk_atom_intern("_NET_WM_MOVERESIZE", FALSE);
+    type = gdk_x11_atom_to_xatom(gdk_atom_intern("_NET_WM_MOVERESIZE", FALSE));
 
         xev.type = ClientMessage;
         xev.xclient.type = ClientMessage;
@@ -367,7 +371,7 @@
                                
 static gboolean find_atom(Atom *atoms, int n, const char *name)
 {
-        Atom a = gdk_atom_intern(name, FALSE);
+    Atom a = gdk_x11_atom_to_xatom(gdk_atom_intern(name, FALSE));
         int i;
 
         for (i = 0; i < n; i++)
@@ -378,7 +382,7 @@
 
 static gboolean get_supported_atoms(Atom **atoms, unsigned long *natoms, const char *name)
 {
-        Atom supported = gdk_atom_intern(name, FALSE), r_type;
+    Atom supported = gdk_x11_atom_to_xatom(gdk_atom_intern(name, FALSE)), r_type;
         unsigned long bremain;
         int r_format, p;
 
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/hslider.c xmms-1.2.9/xmms/hslider.c
--- xmms-1.2.9-orig/xmms/hslider.c	2000-08-05 15:10:37.000000000 +0100
+++ xmms-1.2.9/xmms/hslider.c	2004-05-21 15:04:13.000000000 +0100
@@ -146,9 +146,9 @@
         hs->hs_widget.width = w;
         hs->hs_widget.height = h;
         hs->hs_widget.visible = 1;
-        hs->hs_widget.button_press_cb = GTK_SIGNAL_FUNC(hslider_button_press_cb);
-        hs->hs_widget.button_release_cb = GTK_SIGNAL_FUNC(hslider_button_release_cb);
-        hs->hs_widget.motion_cb = GTK_SIGNAL_FUNC(hslider_motion_cb);
+    hs->hs_widget.button_press_cb = hslider_button_press_cb;
+    hs->hs_widget.button_release_cb = hslider_button_release_cb;
+    hs->hs_widget.motion_cb = hslider_motion_cb;
         hs->hs_widget.draw = hslider_draw;
         hs->hs_knob_nx = knx;
         hs->hs_knob_ny = kny;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/input.c xmms-1.2.9/xmms/input.c
--- xmms-1.2.9-orig/xmms/input.c	2003-08-08 18:10:44.000000000 +0100
+++ xmms-1.2.9/xmms/input.c	2004-05-21 15:04:13.000000000 +0100
@@ -365,7 +365,7 @@
                 ext = strrchr(temp, '.');
                 if (ext)
                         *ext = '\0';
-                input->file_name = g_basename(temp);
+        input->file_name = g_path_get_basename(temp);
                 input->file_ext = ext ? ext+1 : NULL;
                 input->file_path = temp;
 
@@ -374,6 +374,8 @@
                 if ( (*title) == NULL )
                     (*title) = g_strdup(input->file_name);
                 (*length) = -1;
+        if ( input->file_name )
+            g_free( input->file_name );
                 g_free(temp);
                 g_free(input);
         }
@@ -386,10 +388,13 @@
         GtkWidget *bbox, *cancel;
 
         char *title, *iplugin;
+    gchar *basename;
                 
-        window = gtk_window_new(GTK_WINDOW_DIALOG);
+    window = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
-        title = g_strdup_printf(_("File Info - %s"), g_basename(filename));
+    basename = g_path_get_basename( filename );
+    title = g_strdup_printf(_("File Info - %s"), basename );
+    g_free( basename );
         gtk_window_set_title(GTK_WINDOW(window), title);
         g_free(title);
         gtk_container_set_border_width(GTK_CONTAINER(window), 10);
@@ -428,9 +433,9 @@
         gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
 
         cancel = gtk_button_new_with_label(_("Close"));
-        gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked",
-                                  GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                  GTK_OBJECT(window));
+    g_signal_connect_swapped(cancel, "clicked",
+                             G_CALLBACK(gtk_widget_destroy),
+                             window);
         GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
         gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);
 
@@ -459,7 +464,7 @@
         input_general_file_info_box(filename, NULL);
 }
 
-GList *input_scan_dir(gchar * dir)
+GList *input_scan_dir(const gchar * dir)
 {
         GList *node, *ret = NULL;
         InputPlugin *ip;
@@ -469,7 +474,7 @@
         {
                 ip = (InputPlugin *) node->data;
                 if (ip && ip->scan_dir && !g_list_find(disabled_iplugins, ip))
-                        ret = ip->scan_dir(dir);
+            ret = ip->scan_dir((gchar *)dir);
                 node = g_list_next(node);
         }
         return ret;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/input.h xmms-1.2.9/xmms/input.h
--- xmms-1.2.9-orig/xmms/input.h	2000-02-16 21:05:57.000000000 +0000
+++ xmms-1.2.9/xmms/input.h	2004-05-21 15:04:13.000000000 +0100
@@ -52,7 +52,7 @@
 void input_update_vis(gint time);
 
 void input_set_info_text(gchar * text);
-GList *input_scan_dir(gchar * dir);
+GList *input_scan_dir(const gchar * dir);
 void input_get_volume(int *l, int *r);
 void input_set_volume(int l, int r);
 void input_file_info_box(gchar * filename);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/main.c xmms-1.2.9/xmms/main.c
--- xmms-1.2.9-orig/xmms/main.c	2004-01-17 00:11:36.000000000 +0000
+++ xmms-1.2.9/xmms/main.c	2004-05-21 17:52:18.000000000 +0100
@@ -519,7 +519,7 @@
 {
         GList *d_iplist, *node;
         gchar *temp;
-        gchar *filename, *str;
+    gchar *filename, *str, *basename;
         gint i;
         ConfigFile *cfgfile;
 
@@ -528,12 +528,14 @@
         if (disabled_iplugins && (g_list_length(disabled_iplugins) > 0))
         {
                 d_iplist = disabled_iplugins;
-                cfg.disabled_iplugins = g_strdup(g_basename(((InputPlugin *) d_iplist->data)->filename));
+        cfg.disabled_iplugins = g_path_get_basename(((InputPlugin *) d_iplist->data)->filename);
                 d_iplist = d_iplist->next;
                 while (d_iplist != NULL)
                 {
                         temp = cfg.disabled_iplugins;
-                        cfg.disabled_iplugins = g_strconcat(temp, ",", g_basename(((InputPlugin *) d_iplist->data)->filename), NULL);
+            basename = g_path_get_basename(((InputPlugin *) d_iplist->data)->filename);
+            cfg.disabled_iplugins = g_strconcat(temp, ",", basename, NULL);
+            g_free( basename );
                         g_free(temp);
                         d_iplist = d_iplist->next;
                 }
@@ -896,7 +898,7 @@
         playlist_clear();
         cleanup_plugins();
         sm_cleanup();
-        gtk_exit(0);
+    exit(0);
 }
 
 void mainwin_destroy(GtkWidget * widget, gpointer data)
@@ -941,11 +943,11 @@
                 {
                         if (cfg.doublesize)
                         {
-                                img = gdk_image_get(mainwin_bg, 0, 0, 275, cfg.player_shaded ? 14 : 116);
+                img = gdk_drawable_get_image(mainwin_bg, 0, 0, 275, cfg.player_shaded ? 14 : 116);
                                 img2 = create_dblsize_image(img);
                                 gdk_draw_image(mainwin_bg_dblsize, mainwin_gc, img2, 0, 0, 0, 0, 550, cfg.player_shaded ? 28 : 232);
-                                gdk_image_destroy(img2);
-                                gdk_image_destroy(img);
+                g_object_unref(img2);
+                g_object_unref(img);
                         }
                 }
                 else
@@ -958,11 +960,11 @@
                                 {
                                         if (cfg.doublesize)
                                         {
-                                                img = gdk_image_get(mainwin_bg, w->x, w->y, w->width, w->height);
+                        img = gdk_drawable_get_image(mainwin_bg, w->x, w->y, w->width, w->height);
                                                 img2 = create_dblsize_image(img);
                                                 gdk_draw_image(mainwin_bg_dblsize, mainwin_gc, img2, 0, 0, w->x << 1, w->y << 1, w->width << 1, w->height << 1);
-                                                gdk_image_destroy(img2);
-                                                gdk_image_destroy(img);
+                        g_object_unref(img2);
+                        g_object_unref(img);
                                                 gdk_window_clear_area(mainwin->window, w->x << 1, w->y << 1, w->width << 1, w->height << 1);
                                         }
                                         else
@@ -1339,7 +1341,8 @@
                 gdk_pointer_grab(mainwin->window, FALSE,
                                  GDK_BUTTON_MOTION_MASK |
                                  GDK_BUTTON_RELEASE_MASK,
-                                 GDK_NONE, GDK_NONE, GDK_CURRENT_TIME);
+                 (GdkWindow *)GDK_NONE, (GdkCursor *)GDK_NONE,
+                 GDK_CURRENT_TIME);
 }
 
 void mainwin_focus_in(GtkWidget * widget, GdkEvent * event, gpointer callback_data)
@@ -1433,11 +1436,11 @@
         if (!get_input_playing())
                 return;
 
-        mainwin_jtt = gtk_window_new(GTK_WINDOW_DIALOG);
+    mainwin_jtt = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(mainwin_jtt), _("Jump to time"));
         gtk_window_set_policy(GTK_WINDOW(mainwin_jtt), FALSE, FALSE, FALSE);
         gtk_window_set_transient_for(GTK_WINDOW(mainwin_jtt), GTK_WINDOW(mainwin));
-        gtk_signal_connect(GTK_OBJECT(mainwin_jtt), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &mainwin_jtt);
+    g_signal_connect(mainwin_jtt, "destroy", G_CALLBACK(gtk_widget_destroyed), &mainwin_jtt);
         gtk_container_border_width(GTK_CONTAINER(mainwin_jtt), 10);
 
         vbox = gtk_vbox_new(FALSE, 5);
@@ -1456,7 +1459,7 @@
         gtk_widget_show(hbox_new);
         time_entry = gtk_entry_new();
         gtk_box_pack_start(GTK_BOX(hbox_new), time_entry, FALSE, FALSE, 5);
-        gtk_signal_connect(GTK_OBJECT(time_entry), "activate", GTK_SIGNAL_FUNC(mainwin_jump_to_time_cb), time_entry);
+    g_signal_connect(time_entry, "activate", G_CALLBACK(mainwin_jump_to_time_cb), time_entry);
         gtk_widget_show(time_entry);
         gtk_widget_set_usize(time_entry, 70, -1);
         label = gtk_label_new(_("minutes:seconds"));
@@ -1478,17 +1481,17 @@
         bbox = gtk_hbutton_box_new();
         gtk_box_pack_start(GTK_BOX(vbox), bbox, TRUE, TRUE, 0);
         gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
-        gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
+    gtk_box_set_spacing(GTK_BOX(bbox), 5);
         gtk_widget_show(bbox);
         jump = gtk_button_new_with_label(_("Jump"));
         GTK_WIDGET_SET_FLAGS(jump, GTK_CAN_DEFAULT);
         gtk_container_add(GTK_CONTAINER(bbox), jump);
-        gtk_signal_connect(GTK_OBJECT(jump), "clicked", GTK_SIGNAL_FUNC(mainwin_jump_to_time_cb), time_entry);
+    g_signal_connect(jump, "clicked", G_CALLBACK(mainwin_jump_to_time_cb), time_entry);
         gtk_widget_show(jump);
         cancel = gtk_button_new_with_label(_("Cancel"));
         GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
         gtk_container_add(GTK_CONTAINER(bbox), cancel);
-        gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(mainwin_jtt));
+    g_signal_connect_swapped(cancel, "clicked", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(mainwin_jtt));
         gtk_widget_show(cancel);
 
         tindex = input_get_time() / 1000;
@@ -1642,7 +1645,7 @@
         clist = GTK_CLIST(userdata);
 
         /* lowercase the key string */
-        g_strdown(key);
+    g_ascii_strdown(key, -1);
         
         /* Chop the key string into ' '-separeted key words */
         for (ptr = key; nw < 20; ptr = strchr(ptr, ' '))
@@ -1771,7 +1774,7 @@
                 return;
         }
 
-        mainwin_jtf = gtk_window_new(GTK_WINDOW_DIALOG);
+    mainwin_jtf = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(mainwin_jtf), _("Jump to file"));
         gtk_window_set_transient_for(GTK_WINDOW(mainwin_jtf), GTK_WINDOW(mainwin));
         gtk_signal_connect(GTK_OBJECT(mainwin_jtf), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &mainwin_jtf);
@@ -1884,7 +1887,7 @@
                 gdk_window_get_root_origin(window->window,
                                            &cfg.player_x, &cfg.player_y);
         else            
-                gdk_window_get_deskrelative_origin(window->window,
+        gdk_window_get_root_origin(window->window,
                                                    &cfg.player_x, &cfg.player_y);
         return FALSE;
 }
@@ -1957,7 +1960,7 @@
 
 void mainwin_url_ok_clicked(GtkWidget * w, GtkWidget * entry)
 {
-        char *text = gtk_entry_get_text(GTK_ENTRY(entry));
+    gchar *text = (gchar *)gtk_entry_get_text(GTK_ENTRY(entry));
 
         if (text && *text)
         {
@@ -1978,11 +1981,11 @@
 
 void mainwin_url_enqueue_clicked(GtkWidget * w, GtkWidget * entry)
 {
-        gchar *text;
+    const gchar *text;
         
         text = gtk_entry_get_text(GTK_ENTRY(entry));
         if (text && *text)
-                playlist_add_url_string(text);
+        playlist_add_url_string((gchar *)text);
         gtk_widget_destroy(mainwin_url_window);
 }
 
@@ -2250,6 +2253,7 @@
 
 void mainwin_real_show(void)
 {
+  GdkGeometry geom;
         cfg.player_visible = TRUE;
 
         if (cfg.player_shaded)
@@ -2269,11 +2273,13 @@
         if (!nullmask)
                 /* Startup */
                 return;
-        gdk_pixmap_unref(nullmask);
+    g_object_unref(nullmask);
         nullmask = NULL;
-        gdk_window_set_hints(mainwin->window, 0, 0,
-                             PLAYER_WIDTH, PLAYER_HEIGHT,
-                             PLAYER_WIDTH, PLAYER_HEIGHT,
+    geom.min_width = geom.max_width = PLAYER_WIDTH;
+    geom.min_height = geom.max_height = PLAYER_HEIGHT;
+    gtk_window_set_geometry_hints( GTK_WINDOW(mainwin->window),
+                                   GTK_WIDGET(mainwin),
+                                   &geom,
                              GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
         gdk_window_resize(mainwin->window, PLAYER_WIDTH, PLAYER_HEIGHT);
         draw_main_window(TRUE);
@@ -2284,6 +2290,7 @@
 {
         GdkGC *gc;
         GdkColor pattern;
+    GdkGeometry geom;
 
 /*      if (!cfg.player_visible) */
 /*              return; */
@@ -2302,10 +2309,14 @@
                 pattern.pixel = 0;
                 gdk_gc_set_foreground(gc, &pattern);
                 gdk_draw_rectangle(nullmask, gc, TRUE, 0, 0, 20, 20);
-                gdk_gc_destroy(gc);
+        g_object_unref(gc);
                 gtk_widget_shape_combine_mask(mainwin, nullmask, 0, 0);
 
-                gdk_window_set_hints(mainwin->window, 0, 0, 0, 0, 0, 0, GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
+        geom.min_width = geom.max_width = geom.min_height = geom.max_height = 0;
+        gtk_window_set_geometry_hints(GTK_WINDOW(mainwin->window),
+                                      GTK_WIDGET(mainwin),
+                                      &geom,
+                                      GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
                 gdk_window_resize(mainwin->window, 0, 0);
 
         }
@@ -2797,7 +2808,7 @@
 {
         static GdkPixmap *icon;
         static GdkBitmap *mask;
-        Atom icon_atom;
+    GdkAtom icon_atom;
         glong data[2];
 
         if (!icon)
@@ -2956,7 +2967,7 @@
 
 void mainwin_recreate(void)
 {
-        gtk_signal_disconnect_by_func(GTK_OBJECT(mainwin), mainwin_destroy, NULL);
+    g_signal_handlers_disconnect_by_func( mainwin, mainwin_destroy, NULL);
         dock_window_list = g_list_remove(dock_window_list, mainwin);
         gtk_widget_destroy(mainwin);
         mainwin_create_gtk();
@@ -2995,8 +3006,8 @@
                           "You have the correct output plugin selected\n"
                           "No other program is blocking the soundcard"),
                         _("Ok"), FALSE, NULL, NULL);
-                gtk_signal_connect(GTK_OBJECT(infobox), "destroy",
-                                   gtk_widget_destroyed, &infobox);
+        g_signal_connect( infobox, "destroy",
+                          G_CALLBACK(gtk_widget_destroyed), &infobox);
         }
         else
                 gdk_window_raise(infobox->window);
@@ -3379,7 +3390,8 @@
 static gboolean pposition_configure(GtkWidget *w, GdkEventConfigure *event, gpointer data)
 {
         gint x,y;
-        gdk_window_get_deskrelative_origin(w->window, &x, &y);
+
+    gdk_window_get_root_origin(w->window, &x, &y);
         if(x != 0 || y != 0)
                 pposition_broken = TRUE;
         gtk_widget_destroy(w);
@@ -3409,12 +3421,12 @@
         pattern.pixel = 0;
         gdk_gc_set_foreground(gc, &pattern);
         gdk_draw_rectangle(mask, gc, TRUE, 0, 0, 1, 1);
-        gdk_gc_destroy(gc);
+    g_object_unref(gc);
         gtk_widget_shape_combine_mask(window, mask, 0, 0);      
 
         gtk_widget_show(window);
 
-        while (g_main_iteration(FALSE))
+    while (g_main_context_iteration(NULL,FALSE))
                 ;
 }
 
@@ -3548,8 +3560,8 @@
                 handle_cmd_line_options(&options, TRUE);
                 exit(0);
         }
-        gdk_rgb_init();
-        gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
+
+    gtk_widget_set_default_colormap(gdk_rgb_get_colormap());
         gtk_widget_set_default_visual(gdk_rgb_get_visual());
 
         if (gtk_major_version == 1 && (gtk_minor_version < 2 || (gtk_minor_version == 2 && gtk_micro_version < 2)))
@@ -3569,7 +3581,7 @@
         mainwin_create();
 
         filename = g_strconcat(g_get_home_dir(), "/.xmms/gtkrc", NULL);
-        gtk_rc_init();
+    _gtk_rc_init();
         gtk_rc_parse(filename);
         g_free(filename);
 
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/pbutton.c xmms-1.2.9/xmms/pbutton.c
--- xmms-1.2.9-orig/xmms/pbutton.c	2000-08-05 15:10:37.000000000 +0100
+++ xmms-1.2.9/xmms/pbutton.c	2004-05-21 15:04:13.000000000 +0100
@@ -47,8 +47,9 @@
         }
 }
 
-void pbutton_button_press_cb(GtkWidget * widget, GdkEventButton * event, PButton * button)
+void pbutton_button_press_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    PButton * button = (PButton *)data;
         if (event->button != 1)
                 return;
         if (inside_widget(event->x, event->y, &button->pb_widget))
@@ -59,8 +60,9 @@
         }
 }
 
-void pbutton_button_release_cb(GtkWidget * widget, GdkEventButton * event, PButton * button)
+void pbutton_button_release_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    PButton * button = (PButton *)data;
         if (event->button != 1)
                 return;
         if (button->pb_inside && button->pb_pressed)
@@ -74,8 +76,9 @@
                 button->pb_pressed = 0;
 }
 
-void pbutton_motion_cb(GtkWidget * widget, GdkEventMotion * event, PButton * button)
+void pbutton_motion_cb(GtkWidget * widget, GdkEventMotion * event, gpointer data)
 {
+    PButton * button = (PButton *)data;
         int inside;
 
         if (!button->pb_pressed)
@@ -128,9 +131,9 @@
         b->pb_widget.width = w;
         b->pb_widget.height = h;
         b->pb_widget.visible = 1;
-        b->pb_widget.button_press_cb = GTK_SIGNAL_FUNC(pbutton_button_press_cb);
-        b->pb_widget.button_release_cb = GTK_SIGNAL_FUNC(pbutton_button_release_cb);
-        b->pb_widget.motion_cb = GTK_SIGNAL_FUNC(pbutton_motion_cb);
+    b->pb_widget.button_press_cb = pbutton_button_press_cb;
+    b->pb_widget.button_release_cb = pbutton_button_release_cb;
+    b->pb_widget.motion_cb = pbutton_motion_cb;
         b->pb_widget.draw = pbutton_draw;
         b->pb_nx = nx;
         b->pb_ny = ny;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/playlist.c xmms-1.2.9/xmms/playlist.c
--- xmms-1.2.9-orig/xmms/playlist.c	2004-01-28 21:15:56.000000000 +0000
+++ xmms-1.2.9/xmms/playlist.c	2004-05-21 15:04:13.000000000 +0100
@@ -934,7 +934,8 @@
 
 char *playlist_get_info_text(void)
 {
-        char *text, *title, *tmp, *numbers, *length;
+    char *text, *tmp, *numbers, *length;
+    gchar *title;
 
         PL_LOCK();
         if (!playlist_position)
@@ -944,9 +945,9 @@
         }
 
         if (playlist_position->title)
-                title = playlist_position->title;
+        title = g_strdup( playlist_position->title );
         else
-                title = g_basename(playlist_position->filename);
+        title = g_path_get_basename(playlist_position->filename);
 
         /*
          * If the user don't want numbers in the playlist, don't
@@ -966,6 +967,7 @@
                 length = g_strdup("");
 
         text = g_strdup_printf("%s%s%s", numbers, title, length);
+    g_free(title);
         g_free(numbers);
         g_free(length);
 
@@ -1316,7 +1318,7 @@
         }
 
         if (title == NULL)
-                title = g_strdup(g_basename(filename));
+        title = g_path_get_basename(filename);
 
         g_free(filename);
 
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/playlist_list.c xmms-1.2.9/xmms/playlist_list.c
--- xmms-1.2.9-orig/xmms/playlist_list.c	2003-06-11 19:44:17.000000000 +0100
+++ xmms-1.2.9/xmms/playlist_list.c	2004-05-21 16:25:15.000000000 +0100
@@ -118,8 +118,9 @@
                 pl->pl_prev_max++;
 }
 
-void playlist_list_button_press_cb(GtkWidget * widget, GdkEventButton * event, PlayList_List * pl)
+void playlist_list_button_press_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    PlayList_List * pl = (PlayList_List *)data;
         if (event->button == 1 && pl->pl_fheight &&
             inside_widget(event->x, event->y, &pl->pl_widget))
         {
@@ -195,8 +196,9 @@
         return(MIN((iy / pl->pl_fheight) + pl->pl_first, length - 1));
 }
 
-void playlist_list_motion_cb(GtkWidget * widget, GdkEventMotion * event, PlayList_List * pl)
+void playlist_list_motion_cb(GtkWidget * widget, GdkEventMotion * event, gpointer data)
 {
+    PlayList_List * pl = (PlayList_List *)data;
         gint nr, y, off, i;
 
         if (pl->pl_dragging)
@@ -244,8 +246,9 @@
         }
 }
 
-void playlist_list_button_release_cb(GtkWidget * widget, GdkEventButton * event, PlayList_List * pl)
+void playlist_list_button_release_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    PlayList_List * pl = (PlayList_List *)data;
         pl->pl_dragging = FALSE;
         pl->pl_auto_drag_down = FALSE;
         pl->pl_auto_drag_up = FALSE;
@@ -394,7 +397,8 @@
         GdkGC *gc;
         GdkPixmap *obj;
         int width, height;
-        char *text, *title;
+    char *text;
+    gchar *title;
         int i, tw, max_first;
 
         gc = pl->pl_widget.gc;
@@ -452,9 +456,9 @@
                         gdk_gc_set_foreground(gc, get_skin_color(SKIN_PLEDIT_NORMAL));
 
                 if (entry->title)
-                        title = entry->title;
+            title = g_strdup( entry->title );
                 else
-                        title = g_basename(entry->filename);
+            title = g_path_get_basename(entry->filename);
 
                 pos = playlist_get_queue_position(entry);
                 
@@ -496,6 +500,7 @@
                 else
                         playlist_list_draw_string(pl, playlist_list_font,
                                                   i - pl->pl_first, tw, text);
+        g_free(title);
                 g_free(text);
         }
         PL_UNLOCK();
@@ -513,9 +518,9 @@
         pl->pl_widget.width = w;
         pl->pl_widget.height = h;
         pl->pl_widget.visible = TRUE;
-        pl->pl_widget.button_press_cb = GTK_SIGNAL_FUNC(playlist_list_button_press_cb);
-        pl->pl_widget.button_release_cb = GTK_SIGNAL_FUNC(playlist_list_button_release_cb);
-        pl->pl_widget.motion_cb = GTK_SIGNAL_FUNC(playlist_list_motion_cb);
+    pl->pl_widget.button_press_cb = playlist_list_button_press_cb;
+    pl->pl_widget.button_release_cb = playlist_list_button_release_cb;
+    pl->pl_widget.motion_cb = playlist_list_motion_cb;
         pl->pl_widget.draw = playlist_list_draw;
         pl->pl_prev_selected = -1;
         pl->pl_prev_min = -1;
@@ -527,7 +532,7 @@
 void playlist_list_set_font(char *font)
 {
         if (playlist_list_font)
-                gdk_font_unref(playlist_list_font);
+        g_object_unref(playlist_list_font);
 
         playlist_list_font = util_font_load(font);
 }
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/playlist_popup.c xmms-1.2.9/xmms/playlist_popup.c
--- xmms-1.2.9-orig/xmms/playlist_popup.c	2001-08-19 20:15:19.000000000 +0100
+++ xmms-1.2.9/xmms/playlist_popup.c	2004-05-21 16:25:15.000000000 +0100
@@ -61,7 +61,7 @@
                 gdk_pointer_ungrab(GDK_CURRENT_TIME);
                 gdk_flush();
                 gtk_widget_destroy(popup->window);
-                gdk_gc_unref(popup->gc);
+        g_object_unref(popup->gc);
                 g_free(popup->nx);
                 g_free(popup->ny);
                 g_free(popup->sx);
@@ -139,6 +139,6 @@
         gdk_window_raise(popup->window->window);
         gdk_flush();
         playlist_popup_draw(popup);
-        gdk_pointer_grab(popup->window->window, FALSE, GDK_BUTTON_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, GDK_NONE, GDK_NONE, GDK_CURRENT_TIME);
+    gdk_pointer_grab(popup->window->window, FALSE, GDK_BUTTON_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, (GdkWindow *)GDK_NONE, (GdkCursor *)GDK_NONE, GDK_CURRENT_TIME);
         gdk_flush();
 }
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/playlist_slider.c xmms-1.2.9/xmms/playlist_slider.c
--- xmms-1.2.9-orig/xmms/playlist_slider.c	2003-05-19 22:22:08.000000000 +0100
+++ xmms-1.2.9/xmms/playlist_slider.c	2004-05-21 16:25:15.000000000 +0100
@@ -41,12 +41,12 @@
                                        ps->ps_back_image, 0, 0,
                                        ps->ps_widget.x,
                                        ps->ps_widget.y + ps->ps_prev_y, 8, 18);
-                gdk_image_destroy(ps->ps_back_image);
+        g_object_unref(ps->ps_back_image);
         }
 
         ps->ps_prev_y = y;
         ps->ps_prev_height = ps->ps_widget.height;
-        ps->ps_back_image = gdk_image_get(obj, ps->ps_widget.x,
+    ps->ps_back_image = gdk_drawable_get_image(obj, ps->ps_widget.x,
                                           ps->ps_widget.y + y, 8, 18);
         if (ps->ps_is_draging)
                 skinx = 61;
@@ -68,8 +68,9 @@
 }
 
 
-void playlistslider_button_press_cb(GtkWidget * widget, GdkEventButton * event, PlaylistSlider * ps)
+void playlistslider_button_press_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    PlaylistSlider * ps = (PlaylistSlider *)data;
         int y = event->y - ps->ps_widget.y;
 
         if (!inside_widget(event->x, event->y, &ps->ps_widget))
@@ -100,8 +101,9 @@
         }
 }
 
-void playlistslider_button_release_cb(GtkWidget * widget, GdkEventButton * event, PlaylistSlider * ps)
+void playlistslider_button_release_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    PlaylistSlider * ps = (PlaylistSlider *)data;
         if (ps->ps_is_draging)
         {
                 ps->ps_is_draging &= ~event->button;
@@ -109,8 +111,9 @@
         }
 }
 
-void playlistslider_motion_cb(GtkWidget * widget, GdkEventMotion * event, PlaylistSlider * ps)
+void playlistslider_motion_cb(GtkWidget * widget, GdkEventMotion * event, gpointer data)
 {
+    PlaylistSlider * ps = (PlaylistSlider *)data;
         int y;
 
         if (!ps->ps_is_draging)
@@ -132,9 +135,9 @@
         ps->ps_widget.width = 8;
         ps->ps_widget.height = h;
         ps->ps_widget.visible = 1;
-        ps->ps_widget.button_press_cb = GTK_SIGNAL_FUNC(playlistslider_button_press_cb);
-        ps->ps_widget.button_release_cb = GTK_SIGNAL_FUNC(playlistslider_button_release_cb);
-        ps->ps_widget.motion_cb = GTK_SIGNAL_FUNC(playlistslider_motion_cb);
+    ps->ps_widget.button_press_cb = playlistslider_button_press_cb;
+    ps->ps_widget.button_release_cb = playlistslider_button_release_cb;
+    ps->ps_widget.motion_cb = playlistslider_motion_cb;
         ps->ps_widget.draw = playlistslider_draw;
         ps->ps_list = list;
         add_widget(wlist, ps);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/playlistwin.c xmms-1.2.9/xmms/playlistwin.c
--- xmms-1.2.9-orig/xmms/playlistwin.c	2004-01-28 18:55:23.000000000 +0000
+++ xmms-1.2.9/xmms/playlistwin.c	2004-05-21 17:22:10.000000000 +0100
@@ -333,11 +333,11 @@
         pattern.pixel = 1;
         gdk_gc_set_foreground(gc, &pattern);
         gdk_draw_rectangle(playlistwin_mask, gc, TRUE, 0, 0, cfg.playlist_width, PLAYLIST_HEIGHT);
-        gdk_gc_destroy(gc);
+    g_object_unref(gc);
         gtk_widget_shape_combine_mask(playlistwin, playlistwin_mask, 0, 0);
 
         if (tmp)
-                gdk_bitmap_unref(tmp);
+        g_object_unref(tmp);
 }
 
 void playlistwin_set_shade_menu_cb(gboolean shaded)
@@ -521,7 +521,7 @@
         clear_widget_list_redraw(playlistwin_wlist);
         gdk_window_set_back_pixmap(playlistwin->window, playlistwin_bg, 0);
         gdk_window_clear(playlistwin->window);
-        gdk_pixmap_unref(oldbg);
+    g_object_unref(oldbg);
 }
 
 static gboolean playlistwin_resize_handler(gpointer data)
@@ -549,14 +549,17 @@
 static void playlistwin_motion(GtkWidget * widget, GdkEventMotion * event, gpointer callback_data)
 {
         XEvent ev;
+    GdkGeometry geom;
 
         if (playlistwin_resizing)
         {
                 playlistwin_resize(event->x + playlistwin_resize_x,
                                    event->y + playlistwin_resize_y);
-                gdk_window_set_hints(playlistwin->window, 0, 0,
-                                     cfg.playlist_width, PLAYLIST_HEIGHT,
-                                     cfg.playlist_width, PLAYLIST_HEIGHT,
+        geom.min_width = geom.max_width = cfg.playlist_width;
+        geom.min_height = geom.max_height = PLAYLIST_HEIGHT;
+        gtk_window_set_geometry_hints(GTK_WINDOW(playlistwin->window),
+                                      GTK_WIDGET(playlistwin),
+                                      &geom,
                                      GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
                 gdk_window_resize(playlistwin->window,
                                   cfg.playlist_width, PLAYLIST_HEIGHT);
@@ -591,9 +594,10 @@
 
 static void playlistwin_url_ok_clicked(GtkWidget * w, GtkWidget * entry)
 {
-        char *text, *temp;
+    gchar *text;
+    char *temp;
 
-        text = gtk_entry_get_text(GTK_ENTRY(entry));
+    text = (gchar *)gtk_entry_get_text(GTK_ENTRY(entry));
         if (text && *text)
         {
                 g_strstrip(text);
@@ -797,7 +801,8 @@
 
 static void playlistwin_save_filesel_ok(GtkWidget * w, GtkFileSelection * filesel)
 {
-        char *filename, *slash;
+    const char *filename;
+    char *slash;
         struct stat statd;
         int len;
         gboolean pls = FALSE;
@@ -847,11 +852,11 @@
         cfg.playlist_path = g_strndup(filename, len);
 
         if (stat(filename, &statd) == 0)
-                playlistwin_check_overwrite(GTK_WIDGET(filesel), filename, pls);
+        playlistwin_check_overwrite(GTK_WIDGET(filesel), (gchar *)filename, pls);
         else
         {
-                if (!playlist_save(filename, pls))
-                        playlistwin_save_playlist_error(filename, GTK_WIDGET(filesel));
+        if (!playlist_save((gchar *)filename, pls))
+            playlistwin_save_playlist_error((gchar *)filename, GTK_WIDGET(filesel));
                 else
                         gtk_widget_hide(GTK_WIDGET(filesel));
         }
@@ -1285,7 +1290,7 @@
         if (grab)
                 gdk_pointer_grab(playlistwin->window, FALSE,
                                  GDK_BUTTON_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
-                                 GDK_NONE, GDK_NONE, GDK_CURRENT_TIME);
+                 (GdkWindow *)GDK_NONE, (GdkCursor *)GDK_NONE, GDK_CURRENT_TIME);
 
 }
 
@@ -1321,9 +1326,14 @@
                 gdk_window_get_root_origin(window->window,
                                            &cfg.playlist_x, &cfg.playlist_y);
         else
+#ifdef GDK_DISABLE_DEPRECATE
+      ;
+#     warning "what's this?"
+#else
                 gdk_window_get_deskrelative_origin(window->window,
                                                    &cfg.playlist_x,
                                                    &cfg.playlist_y);
+#endif
 
         return FALSE;
 }
@@ -1480,7 +1490,9 @@
 
         ok = gtk_button_new_with_label(_("Ok"));
         cancel = gtk_button_new_with_label(_("Cancel"));
-        gtk_signal_connect(GTK_OBJECT(ok), "clicked", playlistwin_physically_delete_cb, selected_list);
+    g_signal_connect(ok, "clicked",
+                     G_CALLBACK(playlistwin_physically_delete_cb),
+                     selected_list);
         gtk_signal_connect_object(GTK_OBJECT(ok), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(dialog));
         gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(dialog));
         gtk_box_pack_start(GTK_BOX(bbox), ok, FALSE, FALSE, 0);
@@ -1616,7 +1628,7 @@
                         refresh=FALSE;
                         break;
                 default:
-                        if (!gtk_accel_group_activate(playlistwin_accel, event->keyval, event->state))
+            if (!gtk_accel_groups_activate(G_OBJECT(playlistwin_accel), event->keyval, event->state))
                                 gtk_widget_event(mainwin, (GdkEvent *) event);
                         refresh = FALSE;
                         break;
@@ -1914,7 +1926,7 @@
 
 static void playlistwin_create_gtk(void)
 {
-        playlistwin = gtk_window_new(GTK_WINDOW_DIALOG);
+    playlistwin = gtk_window_new(GTK_WINDOW_POPUP);
         dock_add_window(dock_window_list, playlistwin);
         gtk_widget_set_app_paintable(playlistwin, TRUE);
         if (cfg.show_wm_decorations)
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/pluginenum.c xmms-1.2.9/xmms/pluginenum.c
--- xmms-1.2.9-orig/xmms/pluginenum.c	2004-01-17 00:42:22.000000000 +0000
+++ xmms-1.2.9/xmms/pluginenum.c	2004-05-21 17:07:31.000000000 +0100
@@ -88,7 +88,8 @@
 
 void init_plugins(void)
 {
-        char *dir, *temp, *temp2;
+    char *dir, *temp2;
+    gchar *temp;
         GList *node, *disabled_iplugin_names = NULL;
         int dirsel = 0;
 
@@ -184,9 +185,12 @@
                  * prefix.  We will only see one plugin with the same
                  * basename, so this is usually what the user want.
                  */
-                if (!strcmp(g_basename(cfg.outputplugin),
-                            g_basename(op->filename)))
+        gchar *b1 = g_path_get_basename(cfg.outputplugin);
+        gchar *b2 = g_path_get_basename(op->filename);
+        if (!strcmp(b1,b2))
                         op_data->current_output_plugin = op;
+        g_free( b2 );
+        g_free( b1 );
                 if (op->init)
                         op->init();
                 node = node->next;
@@ -196,12 +200,13 @@
         while (node)
         {
                 InputPlugin *ip = node->data;
-                temp = g_basename(ip->filename);
+        temp = g_path_get_basename(ip->filename);
                 if (g_list_find_custom(disabled_iplugin_names, temp, d_iplist_compare))
                         disabled_iplugins = g_list_append(disabled_iplugins, ip);
                 if (ip->init)
                         ip->init();
                 node = node->next;
+        g_free( temp );
         }
 
         node = disabled_iplugin_names;
@@ -269,36 +274,57 @@
 static int plugin_check_duplicate(char *filename)
 {
         GList *l;
-        char *base_filename = g_basename(filename);
+    gchar *base_filename = g_path_get_basename(filename);
+    gchar *otherbase;
         /*
          * erg.. gotta check 'em all, surely there's a better way
          *                                                 - Zinx
          */
 
-        for (l = ip_data->input_list; l; l = l->next)
-                if (!strcmp(base_filename,
-                            g_basename(((InputPlugin*)l->data)->filename)))
+    for (l = ip_data->input_list; l; l = l->next) {
+        otherbase = g_path_get_basename(((InputPlugin*)l->data)->filename);
+        if (!strcmp(base_filename, otherbase)) {
+            g_free( otherbase );
                         return 1;
+        }
+        g_free(otherbase);
+    }
 
-        for (l = op_data->output_list; l; l = l->next)
-                if (!strcmp(base_filename,
-                            g_basename(((OutputPlugin*)l->data)->filename)))
+    for (l = op_data->output_list; l; l = l->next) {
+        otherbase = g_path_get_basename(((OutputPlugin*)l->data)->filename);
+        if (!strcmp(base_filename, otherbase)) {
+            g_free( otherbase );
                         return 1;
+        }
+        g_free(otherbase);
+    }
 
-        for (l = ep_data->effect_list; l; l = l->next)
-                if (!strcmp(base_filename,
-                            g_basename(((EffectPlugin*)l->data)->filename)))
+    for (l = ep_data->effect_list; l; l = l->next) {
+        otherbase = g_path_get_basename(((EffectPlugin*)l->data)->filename);
+        if (!strcmp(base_filename, otherbase)) {
+            g_free( otherbase );
                         return 1;
+        }
+        g_free(otherbase);
+    }
 
-        for (l = gp_data->general_list; l; l = l->next)
-                if (!strcmp(base_filename,
-                            g_basename(((GeneralPlugin*)l->data)->filename)))
+    for (l = gp_data->general_list; l; l = l->next) {
+        otherbase = g_path_get_basename(((GeneralPlugin*)l->data)->filename);
+        if (!strcmp(base_filename, otherbase)) {
+            g_free( otherbase );
                         return 1;
+        }
+        g_free(otherbase);
+    }
 
-        for (l = vp_data->vis_list; l; l = l->next)
-                if (!strcmp(base_filename,
-                            g_basename(((VisPlugin*)l->data)->filename)))
+    for (l = vp_data->vis_list; l; l = l->next) {
+        otherbase = g_path_get_basename(((VisPlugin*)l->data)->filename);
+        if (!strcmp(base_filename, otherbase)) {
+            g_free( otherbase );
                         return 1;
+        }
+        g_free(otherbase);
+    }
 
         return 0;
 }
@@ -404,7 +430,7 @@
                 {
                         ip->cleanup();
                         GDK_THREADS_LEAVE();
-                        while(g_main_iteration(FALSE));
+            while(g_main_context_iteration(NULL,FALSE));
                         GDK_THREADS_ENTER();
                 }
                 g_free(ip->filename);
@@ -433,7 +459,7 @@
                 {
                         ep->cleanup();
                         GDK_THREADS_LEAVE();
-                        while(g_main_iteration(FALSE));
+            while(g_main_context_iteration(NULL,FALSE));
                         GDK_THREADS_ENTER();
                 }
                 g_free(ep->filename);
@@ -454,7 +480,7 @@
         g_list_free(gp_data->enabled_list);
 
         GDK_THREADS_LEAVE();
-        while(g_main_iteration(FALSE));
+    while(g_main_context_iteration(NULL,FALSE));
         GDK_THREADS_ENTER();
         
         node = gp_data->general_list;
@@ -478,7 +504,7 @@
         g_list_free(vp_data->enabled_list);
         
         GDK_THREADS_LEAVE();
-        while(g_main_iteration(FALSE));
+    while(g_main_context_iteration(NULL,FALSE));
         GDK_THREADS_ENTER();
         
         node = vp_data->vis_list;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/prefswin.c xmms-1.2.9/xmms/prefswin.c
--- xmms-1.2.9-orig/xmms/prefswin.c	2003-12-07 02:06:43.000000000 +0000
+++ xmms-1.2.9/xmms/prefswin.c	2004-05-21 15:04:13.000000000 +0100
@@ -438,9 +438,9 @@
 
         fontsel = gtk_font_selection_dialog_new(_("Select playlist font:"));
         gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(fontsel), gtk_entry_get_text(GTK_ENTRY(prefswin_options_font_entry)));
-        gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(fontsel)->ok_button), "clicked", GTK_SIGNAL_FUNC(prefswin_font_browse_ok), fontsel);
-        gtk_signal_connect_object(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(fontsel)->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(fontsel));
-        gtk_signal_connect(GTK_OBJECT(fontsel), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &fontsel);
+    g_signal_connect(GTK_FONT_SELECTION_DIALOG(fontsel)->ok_button, "clicked", G_CALLBACK(prefswin_font_browse_ok), fontsel);
+    g_signal_connect_swapped(GTK_FONT_SELECTION_DIALOG(fontsel)->cancel_button, "clicked", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(fontsel));
+    g_signal_connect(fontsel, "destroy", G_CALLBACK(gtk_widget_destroyed), &fontsel);
         gtk_widget_show(fontsel);
 }
 
@@ -715,7 +715,7 @@
 
         char *titles[1];
 
-        prefswin = gtk_window_new(GTK_WINDOW_DIALOG);
+    prefswin = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(prefswin), _("Preferences"));
         gtk_window_set_policy(GTK_WINDOW(prefswin), FALSE, FALSE, FALSE);
         gtk_window_set_transient_for(GTK_WINDOW(prefswin), GTK_WINDOW(mainwin));
@@ -1171,7 +1171,9 @@
 
 void gen_module_description(gchar * file, gchar * desc, gchar ** full_desc)
 {
-        (*full_desc) = g_strdup_printf("%s   [%s]", desc, g_basename(file));
+    gchar *basename = g_path_get_basename( file );
+    (*full_desc) = g_strdup_printf("%s   [%s]", desc, basename );
+    g_free( basename );
 }
 
 void add_output_plugins(GtkOptionMenu *omenu)
@@ -1368,7 +1370,7 @@
         gtk_widget_grab_default(prefswin_ok);
 
         GDK_THREADS_LEAVE();
-        while(g_main_iteration(FALSE));
+    while(g_main_context_iteration(NULL,FALSE));
         GDK_THREADS_ENTER();
 
         is_opening = FALSE;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/sbutton.c xmms-1.2.9/xmms/sbutton.c
--- xmms-1.2.9-orig/xmms/sbutton.c	2000-02-16 21:05:59.000000000 +0000
+++ xmms-1.2.9/xmms/sbutton.c	2004-05-21 15:04:13.000000000 +0100
@@ -17,8 +17,9 @@
  */
 #include "xmms.h"
 
-void sbutton_button_press_cb(GtkWidget * widget, GdkEventButton * event, SButton * button)
+void sbutton_button_press_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    SButton *button = (SButton *)data;
         if (event->button != 1)
                 return;
         if (inside_widget(event->x, event->y, &button->sb_widget))
@@ -28,8 +29,9 @@
         }
 }
 
-void sbutton_button_release_cb(GtkWidget * widget, GdkEventButton * event, SButton * button)
+void sbutton_button_release_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    SButton *button = (SButton *)data;
         if (event->button != 1)
                 return;
         if (button->sb_inside && button->sb_pressed)
@@ -42,8 +44,9 @@
                 button->sb_pressed = 0;
 }
 
-void sbutton_motion_cb(GtkWidget * widget, GdkEventMotion * event, SButton * button)
+void sbutton_motion_cb(GtkWidget * widget, GdkEventMotion * event, gpointer data)
 {
+    SButton *button = (SButton *)data;
         int inside;
 
         if (!button->sb_pressed)
@@ -67,9 +70,9 @@
         b->sb_widget.width = w;
         b->sb_widget.height = h;
         b->sb_widget.visible = 1;
-        b->sb_widget.button_press_cb = GTK_SIGNAL_FUNC(sbutton_button_press_cb);
-        b->sb_widget.button_release_cb = GTK_SIGNAL_FUNC(sbutton_button_release_cb);
-        b->sb_widget.motion_cb = GTK_SIGNAL_FUNC(sbutton_motion_cb);
+    b->sb_widget.button_press_cb = sbutton_button_press_cb;
+    b->sb_widget.button_release_cb = sbutton_button_release_cb;
+    b->sb_widget.motion_cb = sbutton_motion_cb;
         b->sb_push_cb = cb;
         add_widget(wlist, b);
         return b;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/skin.c xmms-1.2.9/xmms/skin.c
--- xmms-1.2.9-orig/xmms/skin.c	2003-05-19 22:22:08.000000000 +0100
+++ xmms-1.2.9/xmms/skin.c	2004-05-21 15:04:13.000000000 +0100
@@ -92,7 +92,7 @@
         pattern.pixel = 1;
         gdk_gc_set_foreground(gc, &pattern);
         gdk_draw_rectangle(ret, gc, TRUE, 0, 0, w, h);
-        gdk_gc_destroy(gc);
+    g_object_unref(gc);
 
         return ret;
 }
@@ -100,7 +100,7 @@
 static void load_def_pixmap(SkinPixmap *skinpixmap, gchar **skindata)
 {
         skinpixmap->def_pixmap = gdk_pixmap_create_from_xpm_d(mainwin->window, NULL, NULL, skindata);
-        gdk_window_get_size(skinpixmap->def_pixmap, &skinpixmap->width, &skinpixmap->height);
+    gdk_drawable_get_size(skinpixmap->def_pixmap, &skinpixmap->width, &skinpixmap->height);
 }
 
 static void skin_query_color(GdkColormap *cm, GdkColor *c)
@@ -134,8 +134,8 @@
                 return;
 
         /* Get the first line of text */
-        gi = gdk_image_get(text, 0, 0, 152, 6);
-        cm = gdk_window_get_colormap(playlistwin->window);
+    gi = gdk_drawable_get_image(text, 0, 0, 152, 6);
+    cm = gdk_drawable_get_colormap(playlistwin->window);
         for (i = 0; i < 6; i ++)
         {
                 GdkColor c;
@@ -161,7 +161,7 @@
                         }
                 }
         }
-        gdk_image_destroy(gi);
+    g_object_unref(gi);
 }
 
 void init_skins(void)
@@ -188,19 +188,19 @@
         skin->def_pledit_normal.red = 0x2400;
         skin->def_pledit_normal.green = 0x9900;
         skin->def_pledit_normal.blue = 0xffff;
-        gdk_color_alloc(gdk_window_get_colormap(playlistwin->window), &skin->def_pledit_normal);
+    gdk_colormap_alloc_color(gdk_drawable_get_colormap(playlistwin->window), &skin->def_pledit_normal, FALSE, TRUE);
         skin->def_pledit_current.red = 0xffff;
         skin->def_pledit_current.green = 0xee00;
         skin->def_pledit_current.blue = 0xffff;
-        gdk_color_alloc(gdk_window_get_colormap(playlistwin->window), &skin->def_pledit_current);
+    gdk_colormap_alloc_color(gdk_drawable_get_colormap(playlistwin->window), &skin->def_pledit_current, FALSE, TRUE);
         skin->def_pledit_normalbg.red = 0x0A00;
         skin->def_pledit_normalbg.green = 0x1200;
         skin->def_pledit_normalbg.blue = 0x0A00;
-        gdk_color_alloc(gdk_window_get_colormap(playlistwin->window), &skin->def_pledit_normalbg);
+    gdk_colormap_alloc_color(gdk_drawable_get_colormap(playlistwin->window), &skin->def_pledit_normalbg, FALSE, TRUE);
         skin->def_pledit_selectedbg.red = 0x0A00;
         skin->def_pledit_selectedbg.green = 0x1200;
         skin->def_pledit_selectedbg.blue = 0x4A00;
-        gdk_color_alloc(gdk_window_get_colormap(playlistwin->window), &skin->def_pledit_selectedbg);
+    gdk_colormap_alloc_color(gdk_drawable_get_colormap(playlistwin->window), &skin->def_pledit_selectedbg, FALSE, TRUE);
         for (i = 0; i < 24; i++)
         {
                 skin->vis_color[i][0] = skin_default_viscolor[i][0];
@@ -272,7 +272,7 @@
                                                                *(ptr + 1));
                                 
 
-                        gdk_color_alloc(gdk_window_get_colormap(playlistwin->window), color);
+            gdk_colormap_alloc_color(gdk_drawable_get_colormap(playlistwin->window), color, FALSE, TRUE);
                         g_free(value);
                 }
                 g_free(filename);
@@ -297,7 +297,7 @@
 
         if (!skinpixmap->pixmap)
                 return;
-        gdk_window_get_size(skinpixmap->pixmap, &w, &h);
+    gdk_drawable_get_size(skinpixmap->pixmap, &w, &h);
 
         skinpixmap->current_width = MIN(w, skinpixmap->width);
         skinpixmap->current_height = MIN(h, skinpixmap->height);
@@ -368,7 +368,7 @@
         if (!created_mask)
                 gdk_draw_rectangle(mask, gc, TRUE, 0, 0, width, height);
 
-        gdk_gc_destroy(gc);
+    g_object_unref(gc);
 
         return mask;
 }
@@ -436,8 +436,8 @@
                          90, 0, 99, 0, 9, 13);
         skin_draw_pixmap(pixmap, gc, SKIN_NUMBERS,
                          20, 6, 101, 6, 5, 1);
-        gdk_gc_unref(gc);
-        gdk_pixmap_unref(numbers->pixmap);
+    g_object_unref(gc);
+    g_object_unref(numbers->pixmap);
         numbers->pixmap = pixmap;
         numbers->current_width = 108;
 }
@@ -446,7 +446,7 @@
 static void skin_free_pixmap(SkinPixmap *p)
 {
         if (p->pixmap)
-                gdk_pixmap_unref(p->pixmap);
+        g_object_unref(p->pixmap);
         p->pixmap = NULL;
 }
 
@@ -470,21 +470,21 @@
         skin_free_pixmap(&skin->eq_ex);
 
         if (skin->mask_main)
-                gdk_bitmap_unref(skin->mask_main);
+        g_object_unref(skin->mask_main);
         if (skin->mask_main_ds)
-                gdk_bitmap_unref(skin->mask_main_ds);
+        g_object_unref(skin->mask_main_ds);
         if (skin->mask_shade)
-                gdk_bitmap_unref(skin->mask_shade);
+        g_object_unref(skin->mask_shade);
         if (skin->mask_shade_ds)
-                gdk_bitmap_unref(skin->mask_shade_ds);
+        g_object_unref(skin->mask_shade_ds);
         if (skin->mask_eq)
-                gdk_bitmap_unref(skin->mask_eq);
+        g_object_unref(skin->mask_eq);
         if (skin->mask_eq_ds)
-                gdk_bitmap_unref(skin->mask_eq_ds);
+        g_object_unref(skin->mask_eq_ds);
         if (skin->mask_eq_shade)
-                gdk_bitmap_unref(skin->mask_eq_shade);
+        g_object_unref(skin->mask_eq_shade);
         if (skin->mask_eq_shade_ds)
-                gdk_bitmap_unref(skin->mask_eq_shade_ds);
+        g_object_unref(skin->mask_eq_shade_ds);
 
         skin->mask_main = NULL;
         skin->mask_main_ds = NULL;
@@ -892,7 +892,7 @@
         else
                 tmp = pixmap->def_pixmap;
 
-        gdk_draw_pixmap(drawable, gc, tmp, xsrc, ysrc, xdest, ydest, width, height);
+    gdk_draw_drawable(drawable, gc, tmp, xsrc, ysrc, xdest, ydest, width, height);
 }
 
 void skin_get_eq_spline_colors(guint32 (*colors)[19])
@@ -908,10 +908,10 @@
         else
                 pixmap = skin->eqmain.def_pixmap;
 
-        img = gdk_image_get(pixmap, 115, 294, 1, 19);
+    img = gdk_drawable_get_image(pixmap, 115, 294, 1, 19);
         
         for (i = 0; i < 19; i++)
                 (*colors)[i] = gdk_image_get_pixel(img, 0, i);
 
-        gdk_image_destroy(img);
+    g_object_unref(img);
 }
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/skinwin.c xmms-1.2.9/xmms/skinwin.c
--- xmms-1.2.9-orig/xmms/skinwin.c	2001-06-16 00:03:33.000000000 +0100
+++ xmms-1.2.9/xmms/skinwin.c	2004-05-21 15:04:13.000000000 +0100
@@ -46,10 +46,10 @@
         char *titles[1];
         GtkWidget *vbox, *hbox, *main_hbox, *separator, *scrolled_win, *checkbox;
 
-        skinwin = gtk_window_new(GTK_WINDOW_DIALOG);
+    skinwin = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(skinwin), _("Skin selector"));
         gtk_window_set_transient_for(GTK_WINDOW(skinwin), GTK_WINDOW(mainwin));
-        gtk_signal_connect(GTK_OBJECT(skinwin), "delete_event", GTK_SIGNAL_FUNC(skinwin_delete_event), NULL);
+    g_signal_connect(skinwin, "delete_event", G_CALLBACK(skinwin_delete_event), NULL);
         gtk_container_border_width(GTK_CONTAINER(skinwin), 10);
 
         vbox = gtk_vbox_new(FALSE, 5);
@@ -81,7 +81,7 @@
 
         hbox = gtk_hbutton_box_new();
         gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_END);
-        gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 5);
+    gtk_box_set_spacing(GTK_BOX(hbox), 5);
         gtk_box_pack_start(GTK_BOX(main_hbox), hbox, TRUE, TRUE, 0);
         skinwin_close = gtk_button_new_with_label(_("Close"));
         GTK_WIDGET_SET_FLAGS(skinwin_close, GTK_CAN_DEFAULT);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/sm.c xmms-1.2.9/xmms/sm.c
--- xmms-1.2.9-orig/xmms/sm.c	2004-01-11 16:37:40.000000000 +0000
+++ xmms-1.2.9/xmms/sm.c	2004-05-21 15:04:13.000000000 +0100
@@ -147,8 +147,9 @@
 
 #else
 
-void sm_init(int argc, char **argv, const char *previous_session_id)
+const char* sm_init(int argc, char **argv, const char *previous_session_id)
 {
+    return (const char *)NULL;
 }
 
 void sm_cleanup(void)
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/tbutton.c xmms-1.2.9/xmms/tbutton.c
--- xmms-1.2.9-orig/xmms/tbutton.c	2000-08-05 15:10:38.000000000 +0100
+++ xmms-1.2.9/xmms/tbutton.c	2004-05-21 15:04:13.000000000 +0100
@@ -69,8 +69,9 @@
         }
 }
 
-void tbutton_button_press_cb(GtkWidget * widget, GdkEventButton * event, TButton * button)
+void tbutton_button_press_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    TButton * button = (TButton *)data;
         if (event->button != 1)
                 return;
         if (inside_widget(event->x, event->y, &button->tb_widget))
@@ -81,8 +82,10 @@
         }
 }
 
-void tbutton_button_release_cb(GtkWidget * widget, GdkEventButton * event, TButton * button)
+void tbutton_button_release_cb(GtkWidget * widget, GdkEventButton * event, gpointer data)
 {
+    TButton * button = (TButton *)data;
+
         if (event->button != 1)
                 return;
         if (button->tb_inside && button->tb_pressed)
@@ -97,8 +100,9 @@
                 button->tb_pressed = 0;
 }
 
-void tbutton_motion_cb(GtkWidget * widget, GdkEventMotion * event, TButton * button)
+void tbutton_motion_cb(GtkWidget * widget, GdkEventMotion * event, gpointer data)
 {
+    TButton * button = (TButton *)data;
         int inside;
 
         if (!button->tb_pressed)
@@ -125,9 +129,9 @@
         b->tb_widget.width = w;
         b->tb_widget.height = h;
         b->tb_widget.visible = 1;
-        b->tb_widget.button_press_cb = GTK_SIGNAL_FUNC(tbutton_button_press_cb);
-        b->tb_widget.button_release_cb = GTK_SIGNAL_FUNC(tbutton_button_release_cb);
-        b->tb_widget.motion_cb = GTK_SIGNAL_FUNC(tbutton_motion_cb);
+    b->tb_widget.button_press_cb = tbutton_button_press_cb;
+    b->tb_widget.button_release_cb = tbutton_button_release_cb;
+    b->tb_widget.motion_cb = tbutton_motion_cb;
         b->tb_widget.draw = tbutton_draw;
         b->tb_nux = nux;
         b->tb_nuy = nuy;
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/textbox.c xmms-1.2.9/xmms/textbox.c
--- xmms-1.2.9-orig/xmms/textbox.c	2001-12-01 17:00:51.000000000 +0000
+++ xmms-1.2.9/xmms/textbox.c	2004-05-21 16:21:38.000000000 +0100
@@ -48,11 +48,11 @@
                 cw = tb->tb_pixmap_width - tb->tb_offset;
                 if (cw > tb->tb_widget.width)
                         cw = tb->tb_widget.width;
-                gdk_draw_pixmap(obj, tb->tb_widget.gc, src, tb->tb_offset, 0,
+        gdk_draw_drawable(obj, tb->tb_widget.gc, src, tb->tb_offset, 0,
                                 tb->tb_widget.x, tb->tb_widget.y, cw,
                                 tb->tb_widget.height);
                 if (cw < tb->tb_widget.width)
-                        gdk_draw_pixmap(obj, tb->tb_widget.gc, src, 0, 0,
+            gdk_draw_drawable(obj, tb->tb_widget.gc, src, 0, 0,
                                         tb->tb_widget.x + cw, tb->tb_widget.y,
                                         tb->tb_widget.width - cw,
                                         tb->tb_widget.height);
@@ -194,7 +194,7 @@
         gdk_gc_set_foreground(maskgc, &pattern);
         gdk_draw_text(mask, tb->tb_font, maskgc, 0,
                       tb->tb_font->ascent, pixmaptext, length);
-        gdk_gc_unref(maskgc);
+    g_object_unref(maskgc);
 
         gdk_gc_set_clip_mask(gc, mask);
         c = get_skin_color(SKIN_TEXTFG);
@@ -203,7 +203,7 @@
                 gdk_gc_set_foreground(gc, &c[6 * i / tb->tb_widget.height]);
                 gdk_draw_line(tb->tb_pixmap, gc, 0, i, tb->tb_pixmap_width, i);
         }
-        gdk_pixmap_unref(mask);
+    g_object_unref(mask);
         gdk_gc_set_clip_mask(gc, NULL);
 }
 
@@ -335,7 +335,7 @@
         GdkGC *gc;
 
         if (tb->tb_pixmap)
-                gdk_pixmap_unref(tb->tb_pixmap);
+        g_object_unref(tb->tb_pixmap);
         tb->tb_pixmap = NULL;
 
         /*
@@ -523,7 +523,7 @@
 void free_textbox(TextBox * tb)
 {
         if (tb->tb_pixmap)
-                gdk_pixmap_unref(tb->tb_pixmap);
+        g_object_unref(tb->tb_pixmap);
         if (tb->tb_font)
                 gdk_font_unref(tb->tb_font);    
         g_free(tb->tb_text);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/util.c xmms-1.2.9/xmms/util.c
--- xmms-1.2.9-orig/xmms/util.c	2004-01-11 16:27:27.000000000 +0000
+++ xmms-1.2.9/xmms/util.c	2004-05-21 16:54:14.000000000 +0100
@@ -25,6 +25,9 @@
 #ifdef HAVE_FTS_H
 #include <fts.h>
 #endif
+#ifdef GDK_DISABLE_DEPRECATED
+#include <pango/pangox.h>
+#endif
 
 static GQuark quark_popup_data;
 
@@ -460,10 +463,10 @@
 static void util_menu_delete_popup_data(GtkObject *object,
                                         GtkItemFactory *ifactory)
 {
-        gtk_signal_disconnect_by_func(object,
-                                      GTK_SIGNAL_FUNC(util_menu_delete_popup_data),
+    g_signal_handlers_disconnect_by_func(object,
+                                         G_CALLBACK(util_menu_delete_popup_data),
                                       ifactory);
-        gtk_object_remove_data_by_id(GTK_OBJECT(ifactory), quark_popup_data);
+    g_object_set_qdata(G_OBJECT(ifactory), quark_popup_data, (gpointer)NULL);
 }
 
 
@@ -491,13 +494,12 @@
                 quark_popup_data =
                         g_quark_from_static_string("GtkItemFactory-popup-data");
 
-        pos = gtk_object_get_data_by_id(GTK_OBJECT(ifactory),
-                                        quark_user_menu_pos);
+    pos = g_object_get_qdata(G_OBJECT(ifactory), quark_user_menu_pos);
         if (!pos)
         {
                 pos = g_malloc0(sizeof (struct MenuPos));
 
-                gtk_object_set_data_by_id_full(GTK_OBJECT(ifactory->widget),
+        g_object_set_qdata_full(G_OBJECT(ifactory->widget),
                                                quark_user_menu_pos, pos, g_free);
         }
         pos->x = x;
@@ -508,9 +510,9 @@
                 gtk_object_set_data_by_id_full(GTK_OBJECT (ifactory),
                                                quark_popup_data,
                                                data, destroy);
-                gtk_signal_connect(GTK_OBJECT(ifactory->widget),
+        g_signal_connect(GTK_OBJECT(ifactory->widget),
                                    "selection-done",
-                                   GTK_SIGNAL_FUNC(util_menu_delete_popup_data),
+                   G_CALLBACK(util_menu_delete_popup_data),
                                    ifactory);
         }
 
@@ -533,7 +535,7 @@
 
 static void util_add_url_callback(GtkWidget *w, GtkWidget *entry)
 {
-        gchar *text;
+    const gchar *text;
         GList *node;
 
         text = gtk_entry_get_text(GTK_ENTRY(entry));
@@ -553,7 +555,7 @@
 {
         GtkWidget *win, *vbox, *bbox, *ok, *enqueue, *cancel, *combo;
         
-        win = gtk_window_new(GTK_WINDOW_DIALOG);
+    win = gtk_window_new(GTK_WINDOW_POPUP);
         gtk_window_set_title(GTK_WINDOW(win), caption);
         gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_MOUSE);
         gtk_window_set_default_size(GTK_WINDOW(win), 400, -1);
@@ -565,8 +567,11 @@
         combo = gtk_combo_new();
         if(cfg.url_history)
                 gtk_combo_set_popdown_strings(GTK_COMBO(combo), cfg.url_history);
-        gtk_signal_connect(GTK_OBJECT(GTK_COMBO(combo)->entry), "activate", util_add_url_callback, GTK_COMBO(combo)->entry);
-        gtk_signal_connect(GTK_OBJECT(GTK_COMBO(combo)->entry), "activate", ok_func, GTK_COMBO(combo)->entry);
+    g_signal_connect( GTK_OBJECT(GTK_COMBO(combo)->entry), "activate",
+                      G_CALLBACK(util_add_url_callback),
+                      GTK_COMBO(combo)->entry );
+    g_signal_connect(GTK_OBJECT(GTK_COMBO(combo)->entry), "activate",
+                     G_CALLBACK(ok_func), GTK_COMBO(combo)->entry);
         gtk_box_pack_start(GTK_BOX(vbox), combo, FALSE, FALSE, 0);
         gtk_window_set_focus(GTK_WINDOW(win), GTK_COMBO(combo)->entry);
         gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->entry), "");
@@ -577,11 +582,15 @@
         gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
         gtk_widget_show(bbox);
         gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
-        gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
+    gtk_box_set_spacing(GTK_BOX(bbox), 5);
         
         ok = gtk_button_new_with_label(_("Ok"));
-        gtk_signal_connect(GTK_OBJECT(ok), "clicked", util_add_url_callback, GTK_COMBO(combo)->entry);
-        gtk_signal_connect(GTK_OBJECT(ok), "clicked", ok_func, GTK_COMBO(combo)->entry);
+    g_signal_connect(GTK_OBJECT(ok), "clicked",
+                     G_CALLBACK(util_add_url_callback),
+                     GTK_COMBO(combo)->entry);
+    g_signal_connect(GTK_OBJECT(ok), "clicked",
+                     G_CALLBACK(ok_func),
+                     GTK_COMBO(combo)->entry);
         
         GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT);
         gtk_widget_grab_default(ok);
@@ -592,15 +601,19 @@
         {
                 /* I18N: "Enqueue" here means "Add to playlist" */
                 enqueue = gtk_button_new_with_label(_("Enqueue"));
-                gtk_signal_connect(GTK_OBJECT(enqueue), "clicked", util_add_url_callback, GTK_COMBO(combo)->entry);
-                gtk_signal_connect(GTK_OBJECT(enqueue), "clicked", enqueue_func, GTK_COMBO(combo)->entry);
+        g_signal_connect(GTK_OBJECT(enqueue), "clicked",
+                         G_CALLBACK(util_add_url_callback),
+                         GTK_COMBO(combo)->entry);
+        g_signal_connect(GTK_OBJECT(enqueue), "clicked",
+                         G_CALLBACK(enqueue_func),
+                         GTK_COMBO(combo)->entry);
                 GTK_WIDGET_SET_FLAGS(enqueue, GTK_CAN_DEFAULT);
                 gtk_box_pack_start(GTK_BOX(bbox), enqueue, FALSE, FALSE, 0);
                 gtk_widget_show(enqueue);
         }
         
         cancel = gtk_button_new_with_label(_("Cancel"));
-        gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(win));
+    g_signal_connect_swapped(GTK_OBJECT(cancel), "clicked", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(win));
         GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
         gtk_box_pack_start(GTK_BOX(bbox), cancel, FALSE, FALSE, 0);
         gtk_widget_show(cancel);
@@ -621,8 +634,9 @@
 
 static void filebrowser_changed(GtkFileSelection * filesel)
 {
-        GList *list, *node;
-        char *filename = gtk_file_selection_get_filename(filesel);
+    GList *list;
+    GList *node;
+    const gchar *filename = gtk_file_selection_get_filename(filesel);
 
         if ((list = input_scan_dir(filename)) != NULL)
         {
@@ -662,7 +676,7 @@
 
 static void filebrowser_entry_changed(GtkEditable *entry, gpointer data)
 {
-        char *text = gtk_entry_get_text(GTK_ENTRY(entry));
+    const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry));
 
         if (!text || !(*text))
                 filebrowser_changed(GTK_FILE_SELECTION(data));
@@ -722,7 +736,8 @@
 static void filebrowser_add_files(GtkFileSelection * filesel)
 {
         GList *sel_list = NULL, *node;
-        char *text, *ptr;
+    gchar *text;
+    char *ptr;
 
         if (cfg.filesel_path)
                 g_free(cfg.filesel_path);
@@ -730,7 +745,9 @@
         /*
          * There got to be some clean way to do this too
          */
-        gtk_label_get(GTK_LABEL(GTK_BIN(filesel->history_pulldown)->child), &ptr);
+    /*gtk_label_get(GTK_LABEL(GTK_BIN(filesel->history_pulldown)->child),
+     * &ptr);*/
+    ptr = g_strdup( gtk_label_get_text(GTK_LABEL( GTK_BIN(filesel->history_pulldown)->child)));
         /* This will give an extra slash if the current dir is the root. */
         cfg.filesel_path = g_strconcat(ptr, "/", NULL);
 
@@ -749,7 +766,9 @@
                 do {
                         char *tmp;
                         gtk_clist_get_text(GTK_CLIST(filesel->file_list),
-                                           GPOINTER_TO_INT(node->data), 0, &text);
+                               GPOINTER_TO_INT(node->data),
+                               0,
+                               &text);
                         tmp = g_strconcat(cfg.filesel_path, text, NULL);
                         playlist_add(tmp);
                         g_free(tmp);
@@ -761,7 +780,7 @@
                  * No files selected, but the user may have
                  * typed a filename.
                  */
-                text = gtk_file_selection_get_filename(filesel);
+        (const gchar *)text = gtk_file_selection_get_filename(filesel);
                 if (text[strlen(text) - 1] != '/')
                         playlist_add(text);
                 gtk_file_selection_set_filename(filesel, "");
@@ -821,7 +840,10 @@
 
 GtkWidget * util_create_filebrowser(gboolean play_button)
 {
-        GtkWidget *filebrowser, *bbox, *add_selected, *add_all, *label, *button;
+    GtkWidget *filebrowser, *bbox, *add_selected, *add_all, *label;
+#ifdef FIXME
+    GtkWidget *button;
+#endif
         GtkFileSelection *fb;
         GtkSignalFunc sf;
         char *title;
@@ -836,18 +858,18 @@
                 
         gtk_clist_set_selection_mode(GTK_CLIST(fb->file_list),
                                      GTK_SELECTION_EXTENDED);
-        gtk_signal_connect(GTK_OBJECT(fb->selection_entry), "changed",
-                           filebrowser_entry_changed, filebrowser);
-        gtk_signal_connect(GTK_OBJECT(fb->dir_list), "select_row",
-                           filebrowser_dir_select, filebrowser);
+    g_signal_connect(GTK_OBJECT(fb->selection_entry), "changed",
+                     G_CALLBACK(filebrowser_entry_changed), filebrowser);
+    g_signal_connect(GTK_OBJECT(fb->dir_list), "select_row",
+                     G_CALLBACK(filebrowser_dir_select), filebrowser);
         if (play_button)
-                sf = filebrowser_play;
+        sf = GTK_SIGNAL_FUNC( filebrowser_play );
         else
-                sf = filebrowser_add;
-        gtk_signal_connect(GTK_OBJECT(fb->ok_button),
-                           "clicked", sf, filebrowser);
-        gtk_signal_connect_object(GTK_OBJECT(fb->cancel_button), "clicked",
-                                  GTK_SIGNAL_FUNC(gtk_widget_destroy),
+        sf = GTK_SIGNAL_FUNC( filebrowser_add );
+    g_signal_connect(GTK_OBJECT(fb->ok_button),
+               "clicked", G_CALLBACK(sf), filebrowser);
+    g_signal_connect_swapped(GTK_OBJECT(fb->cancel_button), "clicked",
+                  G_CALLBACK(gtk_widget_destroy),
                                   GTK_OBJECT(filebrowser));
 
         if (cfg.filesel_path)
@@ -858,12 +880,12 @@
         gtk_box_pack_end(GTK_BOX(fb->action_area), bbox, TRUE, TRUE, 0);
         add_selected  = gtk_button_new_with_label(_("Add selected files"));
         gtk_box_pack_start(GTK_BOX(bbox), add_selected, FALSE, FALSE, 0);
-        gtk_signal_connect(GTK_OBJECT(add_selected), "clicked",
-                           filebrowser_add_selected_files, filebrowser);
+    g_signal_connect(GTK_OBJECT(add_selected), "clicked",
+                     G_CALLBACK(filebrowser_add_selected_files), filebrowser);
         add_all = gtk_button_new_with_label(_("Add all files in directory"));
         gtk_box_pack_start(GTK_BOX(bbox), add_all, FALSE, FALSE, 0);
-        gtk_signal_connect(GTK_OBJECT(add_all), "clicked",
-                           filebrowser_add_all_files, filebrowser);
+    g_signal_connect(GTK_OBJECT(add_all), "clicked",
+                     G_CALLBACK(filebrowser_add_all_files), filebrowser);
         gtk_widget_show_all(bbox);
 
         /*
@@ -891,6 +913,7 @@
         gtk_container_add(GTK_CONTAINER(fb->ok_button), label);
         gtk_widget_show(label);
 
+#ifdef FIXME
         if (play_button)
         {
                 GtkArg arg;
@@ -901,21 +924,32 @@
                  * should copy the entire filesel code instead.
                  */
                 arg.name = "GtkWidget::parent";
-                gtk_object_arg_get(GTK_OBJECT(fb->ok_button), &arg, NULL);
+        gtk_object_get(GTK_OBJECT(fb->ok_button), arg.name, NULL);
                 button = gtk_button_new_with_label(_("Add"));
-                gtk_signal_connect(GTK_OBJECT(button), "clicked",
-                                   filebrowser_add, filebrowser);
+        g_signal_connect(GTK_OBJECT(button), "clicked",
+                         G_CALLBACK(filebrowser_add), filebrowser);
                 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
                 gtk_box_pack_start(GTK_BOX(arg.d.object_data),
                                    button, TRUE, TRUE, 0);
                 gtk_box_reorder_child(GTK_BOX(arg.d.object_data), button, 1);
                 gtk_widget_show(button);
         }
+#endif
 
         gtk_widget_show(filebrowser);
         return filebrowser;
 }
 
+#ifdef GDK_DISABLE_DEPRECATED
+PangoFontDescription *util_font_load(gchar *name)
+{
+  PangoFontDescription *font;
+
+#warning "NOT IMPLEMENTED"
+
+  return font;
+}
+#else
 GdkFont *util_font_load(char *name)
 {
         GdkFont *font;
@@ -941,6 +975,7 @@
         
         return font;
 }
+#endif
 
 #ifdef ENABLE_NLS
 char* util_menu_translate(const char *path, void *func_data)
@@ -965,7 +1000,7 @@
         {
                 if (cursor)
                 {
-                        gdk_cursor_destroy(cursor);
+            gdk_cursor_unref(cursor);
                         cursor = NULL;
                 }
                 return;
@@ -979,14 +1014,14 @@
 void util_dump_menu_rc(void)
 {
         char *filename = g_strconcat(g_get_home_dir(), "/.xmms/menurc", NULL);
-        gtk_item_factory_dump_rc(filename, NULL, FALSE);
+    gtk_accel_map_save( filename );
         g_free(filename);
 }
 
 void util_read_menu_rc(void)
 {
         char *filename = g_strconcat(g_get_home_dir(), "/.xmms/menurc", NULL);
-        gtk_item_factory_parse_rc(filename);
+    gtk_accel_map_load( filename );
         g_free(filename);
 }
 
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/util.h xmms-1.2.9/xmms/util.h
--- xmms-1.2.9-orig/xmms/util.h	2003-09-04 21:59:27.000000000 +0100
+++ xmms-1.2.9/xmms/util.h	2004-05-21 16:54:02.000000000 +0100
@@ -21,6 +21,7 @@
 #define UTIL_H
 
 #include "i18n.h"
+#include <pango/pango.h> /* for prototypes */
 
 gchar *find_file_recursively(const char *dirname, const char *file);
 void del_directory(const char *dirname);
@@ -36,7 +37,11 @@
 GtkWidget *util_create_add_url_window(gchar *caption, GtkSignalFunc ok_func, GtkSignalFunc enqueue_func);
 GtkWidget *util_create_filebrowser(gboolean clear_pl_on_ok);
 gboolean util_filebrowser_is_dir(GtkFileSelection * filesel);
+#ifdef GDK_DISABLE_DEPRECATED
+PangoFontDescription *util_font_load(gchar *name);
+#else
 GdkFont *util_font_load(gchar *name);
+#endif
 void util_set_cursor(GtkWidget *window);
 void util_dump_menu_rc(void);
 void util_read_menu_rc(void);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms/visualization.c xmms-1.2.9/xmms/visualization.c
--- xmms-1.2.9-orig/xmms/visualization.c	2003-05-19 22:22:08.000000000 +0100
+++ xmms-1.2.9/xmms/visualization.c	2004-05-21 15:04:13.000000000 +0100
@@ -133,12 +133,12 @@
 
         if (g_list_length(node))
         {
-                enalist = g_strdup(g_basename(((VisPlugin *) node->data)->filename));
+        enalist = g_path_get_basename(((VisPlugin *) node->data)->filename);
                 node = node->next;
                 while (node)
                 {
                         temp = enalist;
-                        temp2 = g_strdup(g_basename(((VisPlugin *) node->data)->filename));
+            temp2 = g_path_get_basename(((VisPlugin *) node->data)->filename);
                         enalist = g_strconcat(temp, ",", temp2, NULL);
                         g_free(temp);
                         g_free(temp2);
@@ -150,7 +150,8 @@
 
 void vis_enable_from_stringified_list(gchar * list)
 {
-        gchar **plugins, *base;
+    gchar **plugins;
+    gchar *base;
         GList *node;
         gint i;
         VisPlugin *vp;
@@ -163,7 +164,7 @@
                 node = vp_data->vis_list;
                 while (node)
                 {
-                        base = g_basename(((VisPlugin *) node->data)->filename);
+            base = g_path_get_basename(((VisPlugin *) node->data)->filename);
                         if (!strcmp(plugins[i], base))
                         {
                                 vp = node->data;
@@ -174,6 +175,7 @@
                                         vp->playback_start();
                         }
                         node = node->next;
+            g_free( base );
                 }
         }
         g_strfreev(plugins);
diff -aurBbtw --exclude config.sub --exclude autom4te.cache --exclude config.log --exclude config.status --exclude config.guess --exclude Makefile.in --exclude aclocal.m4 --exclude configure xmms-1.2.9-orig/xmms-config.in xmms-1.2.9/xmms-config.in
--- xmms-1.2.9-orig/xmms-config.in	2001-04-06 01:35:49.000000000 +0100
+++ xmms-1.2.9/xmms-config.in	2004-05-21 15:04:13.000000000 +0100
@@ -22,13 +22,9 @@
 xmms_include_dir="@includedir@/@PACKAGE@"
 lib_dir="@libdir@"
 
-if ( (gtk-config --version) > /dev/null 2>&1)  then
-   gtk_libs=`gtk-config --libs`
-   gtk_cflags=`gtk-config --cflags`
-else
+# use the values we compiled with!
    gtk_libs="@GTK_LIBS@"
    gtk_cflags="@GTK_CFLAGS@"
-fi
 
 plugin_dir="@plugindir@"
 visualization_plugin_dir="@plugindir@/@VISUALIZATION_PLUGIN_DIR@"
Only in xmms-1.2.9-orig: xmms.spec

