Sun 21 Aug 2011 12:36:45 AM UTC, comment #4:
The interesting thing about this is I also followed all the gtkcube.c code for comparison purposes. I was concerned originally that there was a problem in both places. On Linux, I was able to reproduce your crash and/or assertions with the chequer rollouts. The cube rollouts follow a different path. With cubes when you "stop" the data updates are deferred. The relevant code in gtkcube.c that cause this deferral are:
if ( GeneralCubeDecisionR ( aarOutput, aarStdDev, aarsStatistics,
(ConstTanBoard)pchd->ms.anBoard, &ci, &pes->rc, pes,
RolloutProgress, p ) < 0 ) {
RolloutProgressEnd( &p, FALSE );
return;
}
The IF statement on GeneralCubeDecisionR checks to see if the rollout was stopped by the user (Stop/Stopall return -1/-2). They call RollOutProgressEnd and do not do any processing until the next GTK event (by calling return). One of the other solutions to this problem involved doing a similar short circuit in gtkchequer.c .
In gtkchecker.c this check is not done, but of course there is no statistics panel.
I have tried even with the statistics panel up to close a window underneath to generate assertions and I have been unable to do so.
If you can provide exact steps for producing assertions with the cube I'd appreciate it. It may well be that this could be due to an OS/GTK version difference as well.
Th only anomaly I noticed is that with cubes once the rollout window is up and it is stopped that the rollout button is not greyed out on the main move record panel allowing you to hit the rollout button again. This could be solved with some well placed calls to gtk_widget_set_sensitive .
|