Looks like ProgressEnd() is being called, probably in another thread. Changing
GtkProgressValue to have something like:
gdouble frac = (iMax == 0) ? 1 : (double)iValue / iMax;
Jon
On 09/04/2010 06:46, 保坂範行 wrote:
> Hi.
>
> I see assertion fail when analysis of game/match done.
> Such as
> (gnubg:30806): Gtk-CRITICAL **: gtk_progress_set_percentage: assertion
> `percentage>= 0 && percentage <= 1.0' failed
>
>
> To find out, I inserted old printf as follow:
>
> gtkgame.c
> extern void GTKProgressValue ( int iValue, int iMax )
> {
> gchar *gsz;
> gdouble frac = 1.0 * iValue / (1.0 * iMax );
> gsz = g_strdup_printf("%d/%d (%.0f%%)", iValue, iMax, 100 * frac);
> gtk_progress_bar_set_text( GTK_PROGRESS_BAR( pwProgress ), gsz);
> printf("%d, %d, %f\n", iValue, iMax, frac);
> gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR( pwProgress ), frac);
> g_free(gsz);
>
> ProcessEvents();
> }
>
>
> And got:
>
> (Game over) analyse match
> 1, 61, 0.016393
> 3, 61, 0.049180
> 6, 61, 0.098361
> 9, 61, 0.147541
> 12, 61, 0.196721
> 15, 61, 0.245902
> 19, 61, 0.311475
> 28, 61, 0.459016
> 43, 61, 0.704918
> 47, 61, 0.770492
> 49, 61, 0.803279
> 51, 61, 0.836066
> 53, 61, 0.868852
> 55, 61, 0.901639
> 57, 61, 0.934426
> 60, 0, inf
> (gnubg:30806): Gtk-CRITICAL **: gtk_progress_set_percentage: assertion
> `percentage>= 0 && percentage <= 1.0' failed
>
>
> This means GTKProgressValue got iMax =0.
>
> By using ddd/gdb, I found that it happend via
>
> static gboolean UpdateProgressBar(gpointer unused)
> {
> ProgressValue(MT_GetDoneTasks());
> return TRUE;
> }
>
> Some how iMax in ProgressValue has changed to 0.
>
>
> Nori
>
>
> _______________________________________________
> Bug-gnubg mailing list
> [email protected]
> http://lists.gnu.org/mailman/listinfo/bug-gnubg
>
>
_________________________________________________________________
http://clk.atdmt.com/UKM/go/195013117/direct/01/
_______________________________________________
Bug-gnubg mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gnubg