Package: xzgv Version: 0.9+svn40-1 Followup-For: Bug #379869 As an alternative to rebuilding with -O, converting the program to use g_idle_* instead of (deprecated?) gtk_idle_* seems to work. A crude and possibly incomplete patch is attached. It may be useful as a starting point for a real patch. :P
Hope This Helps! -- System Information: Debian Release: lenny/sid APT prefers testing APT policy: (499, 'testing'), (496, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.25-2-amd64 (SMP w/2 CPU cores) Locale: LANG=en_AU, LC_CTYPE=en_AU (charmap=ISO-8859-1) Shell: /bin/sh linked to /bin/bash Versions of packages xzgv depends on: ii libc6 2.7-13 GNU C Library: Shared libraries ii libglib2.0-0 2.16.4-2 The GLib library of C routines ii libgtk2.0-0 2.12.11-3 The GTK+ graphical user interface ii libx11-6 2:1.1.4-2 X11 client-side library xzgv recommends no packages. xzgv suggests no packages. -- no debconf information -MD -- ------------------------------------------------------------------------------- Michael Deegan Hugaholic http://wibble.darktech.org/gallery/ ------------------------- Nyy Tybel Gb Gur Ulcabgbnq! -------------------------
--- xzgv-0.9+svn40/src/main.c 2008-07-12 07:47:14.000000000 +0800 +++ xzgv-0.9+svn40.mod/src/main.c 2008-08-17 00:30:29.000000000 +0800 @@ -201,7 +201,7 @@ /* required prototypes */ void render_pixmap(int reset_pos); void cb_nextprev_tagged_image(int next,int view); -void idle_xvpic_load(int *entryp); +gboolean idle_xvpic_load(int *entryp); gint pic_win_resized(GtkWidget *widget,GdkEventConfigure *event); void cb_scaling_double(void); void cb_xscaling_double(void); @@ -2179,7 +2179,7 @@ idle_xvpic_lastadjval=gtk_clist_get_vadjustment(GTK_CLIST(clist))->value; idle_xvpic_jumped=0; entry=0; -tn_idle_tag=gtk_idle_add((GtkFunction)idle_xvpic_load,&entry); +tn_idle_tag=g_idle_add((GtkFunction)idle_xvpic_load,&entry); /* the "" is a crappy way to disable it, but it's hairy otherwise */ gtk_statusbar_push(GTK_STATUSBAR(statusbar),tn_id, @@ -2193,7 +2193,10 @@ if(thumbnail_read_running()) { gtk_statusbar_pop(GTK_STATUSBAR(statusbar),tn_id); /* remove msg */ - gtk_idle_remove(tn_idle_tag); +// grk_idle_remove(tn_idle_tag); +// g_idle_remove_by_data(tn_idle_tag); +// printf("stop_thumbnail_read(): tn_idle_tag not removed!\n"); +// tn_idle_tag=-1; tn_idle_tag=-1; } } @@ -2236,6 +2239,7 @@ if(thumbnail_read_running()) { stop_thumbnail_read(); + printf("resort_finish(): Hmm, thumbnail reading NOT stopped!\n"); was_reading=1; } @@ -2604,8 +2608,7 @@ return(pixmap); } - -void idle_xvpic_load(int *entryp) +int idle_xvpic_load(int *entryp) { static char buf[1024]; struct clist_data_tag *datptr; @@ -2621,7 +2624,7 @@ /* don't do it if it would be a bad time */ if(idle_xvpic_blocked) - return; + return TRUE; /* freeze/thaw actually *cause* flickering for this, rather than * preventing it (!), so I've not used those here. @@ -2725,10 +2728,13 @@ if(*entryp>=numrows) { /* can't have jump to return from, so just remove ourselves. */ - stop_thumbnail_read(); +// stop_thumbnail_read(); + tn_idle_tag=-1; *entryp=-1; + return FALSE; } } + return TRUE; }