- let frm = &disp_queue.pool[disp_queue.start];
- let texture = if frm.is_yuv { &frm.yuv_tex } else { &frm.rgb_tex };
+ if osd.is_active() {
+ osd.prepare(ctime);
+ }
+ let frm = &mut disp_queue.pool[disp_queue.start];
+ let texture = if frm.is_yuv {
+ if osd.is_active() {
+ frm.yuv_tex.with_lock(None, |buffer: &mut [u8], pitch: usize| {
+ osd.draw_yuv(buffer, pitch);
+ }).unwrap();
+ }
+ &frm.yuv_tex
+ } else {
+ if osd.is_active() {
+ frm.rgb_tex.with_lock(None, |buffer: &mut [u8], pitch: usize| {
+ osd.draw_rgb(buffer, pitch);
+ }).unwrap();
+ }
+ &frm.rgb_tex
+ };