Re-number gif call-sequence values
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 959ea16..901504e 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -8620,7 +8620,7 @@
switch (coro_susp_point) {
WUFFS_BASE__COROUTINE_SUSPENSION_POINT_0;
- if (self->private_impl.f_call_sequence >= 1) {
+ if (self->private_impl.f_call_sequence >= 3) {
status = wuffs_base__error__bad_call_sequence;
goto exit;
}
@@ -8651,7 +8651,7 @@
self->private_impl.f_height,
self->private_impl.f_frame_config_io_position, v_ffio);
}
- self->private_impl.f_call_sequence = 1;
+ self->private_impl.f_call_sequence = 3;
goto ok;
ok:
@@ -8822,8 +8822,8 @@
if (status) {
goto suspend;
}
- } else if (self->private_impl.f_call_sequence != 1) {
- if (self->private_impl.f_call_sequence == 2) {
+ } else if (self->private_impl.f_call_sequence != 3) {
+ if (self->private_impl.f_call_sequence == 4) {
WUFFS_BASE__COROUTINE_SUSPENSION_POINT(2);
status = wuffs_gif__decoder__skip_frame(self, a_src);
if (status) {
@@ -8864,7 +8864,7 @@
}
wuffs_base__u64__sat_add_indirect(
&self->private_impl.f_num_decoded_frame_configs_value, 1);
- self->private_impl.f_call_sequence = 2;
+ self->private_impl.f_call_sequence = 4;
goto ok;
ok:
@@ -9015,7 +9015,7 @@
switch (coro_susp_point) {
WUFFS_BASE__COROUTINE_SUSPENSION_POINT_0;
- if (self->private_impl.f_call_sequence != 2) {
+ if (self->private_impl.f_call_sequence != 4) {
WUFFS_BASE__COROUTINE_SUSPENSION_POINT(1);
status = wuffs_gif__decoder__decode_frame_config(self, NULL, a_src);
if (status) {
@@ -9059,7 +9059,7 @@
static wuffs_base__empty_struct //
wuffs_gif__decoder__reset_gc(wuffs_gif__decoder* self) {
- self->private_impl.f_call_sequence = 3;
+ self->private_impl.f_call_sequence = 5;
self->private_impl.f_seen_graphic_control = false;
self->private_impl.f_gc_has_transparent_index = false;
self->private_impl.f_gc_transparent_index = 0;
diff --git a/std/gif/decode_gif.wuffs b/std/gif/decode_gif.wuffs
index 38b8271..50b6bd1 100644
--- a/std/gif/decode_gif.wuffs
+++ b/std/gif/decode_gif.wuffs
@@ -49,25 +49,25 @@
// Call sequence states:
// - 0: initial state.
- // - 1: image config decoded, including the first frame's bounds, but not
+ // - 3: image config decoded, including the first frame's bounds, but not
// the first frame's pixels.
- // - 2: frame config decoded.
- // - 3: frame decoded.
+ // - 4: frame config decoded.
+ // - 5: frame decoded.
//
// State transitions:
//
- // - 0 -> 1: via IC
- // - 0 -> 2: via FC with implicit IC
- // - 0 -> 3: via F with implicit IC and FC
+ // - 0 -> 3: via IC
+ // - 0 -> 4: via FC with implicit IC
+ // - 0 -> 5: via F with implicit IC and FC
//
- // - 1 -> 2: via FC
- // - 1 -> 3: via F with implicit FC
+ // - 3 -> 4: via FC
+ // - 3 -> 5: via F with implicit FC
//
- // - 2 -> 2: via FC with implicit F
- // - 2 -> 3: via F
+ // - 4 -> 4: via FC with implicit F
+ // - 4 -> 5: via F
//
- // - 3 -> 2: via FC
- // - 3 -> 3: via F with implicit FC
+ // - 5 -> 4: via FC
+ // - 5 -> 5: via F with implicit FC
//
// Where:
// - F is decode_frame, implicit means skip_frame
@@ -130,7 +130,7 @@
pub func decoder.decode_image_config?(dst nptr base.image_config, src base.io_reader) {
var ffio base.bool
- if this.call_sequence >= 1 {
+ if this.call_sequence >= 3 {
return base."#bad call sequence"
}
@@ -158,7 +158,7 @@
first_frame_is_opaque:ffio)
}
- this.call_sequence = 1
+ this.call_sequence = 3
}
pub func decoder.num_animation_loops() base.u32 {
@@ -217,8 +217,8 @@
if not this.end_of_data {
if this.call_sequence == 0 {
this.decode_image_config?(dst:nullptr, src:args.src)
- } else if this.call_sequence <> 1 {
- if this.call_sequence == 2 {
+ } else if this.call_sequence <> 3 {
+ if this.call_sequence == 4 {
this.skip_frame?(src:args.src)
}
this.decode_up_to_id_part1?(src:args.src)
@@ -250,7 +250,7 @@
}
this.num_decoded_frame_configs_value ~sat+= 1
- this.call_sequence = 2
+ this.call_sequence = 4
}
pri func decoder.skip_frame?(src base.io_reader) {
@@ -272,7 +272,7 @@
// TODO: honor args.opts.
pub func decoder.decode_frame?(dst ptr base.pixel_buffer, src base.io_reader, workbuf slice base.u8, opts nptr base.decode_frame_options) {
- if this.call_sequence <> 2 {
+ if this.call_sequence <> 4 {
this.decode_frame_config?(dst:nullptr, src:args.src)
}
this.decode_id_part1?(dst:args.dst, src:args.src)
@@ -283,7 +283,7 @@
}
pri func decoder.reset_gc!() {
- this.call_sequence = 3
+ this.call_sequence = 5
// The Image Descriptor is mandatory, but the Graphic Control extension is
// optional. Reset the GC related fields for the next decode_frame call.
this.seen_graphic_control = false