- if ((ret = roll (this_nframes, current_frame, current_frame + nframes, false, need_butler)) != 0) {
+ if (_seeking && _seek_complete) {
+ _seek_complete = false;
+ _seeking = false;
+ _seek_frame = -1;
+ }
+
+ if(!_seeking) {
+ /* process audio */
+ this_nframes = min (nframes, length - current_frame);
+
+ if ((ret = roll (this_nframes, current_frame, current_frame + nframes, false, need_butler)) != 0) {
+ silence (nframes);
+ return ret;
+ }
+
+ current_frame += this_nframes;
+
+ } else {