+void ResourceThread::stop_draw(int reset)
+{
+ if( !interrupted ) {
+ interrupted = 1;
+ audio_thread->stop_draw(reset);
+ video_thread->stop_draw(reset);
+ ++operation_count;
+ }
+}
+
+void ResourceThread::start_draw()
+{
+ if( interrupted ) {
+ interrupted = 0;
+ audio_thread->start_draw();
+ video_thread->start_draw();
+ }
+}
+
+// Be sure to stop_draw before changing the asset table,
+// closing files.
+void ResourceThread::add_picon(ResourcePixmap *pixmap, int pane_number,
+ int picon_x, int picon_y, int picon_w, int picon_h,
+ double frame_rate, int64_t position, int layer,
+ Indexable *indexable)
+{
+ video_thread->add_picon(pixmap, pane_number,
+ picon_x, picon_y, picon_w, picon_h,
+ frame_rate, position, layer, indexable);
+}
+
+void ResourceThread::add_wave(ResourcePixmap *pixmap, int pane_number,
+ Indexable *indexable, int x, int channel,
+// samples relative to asset rate
+ int64_t source_start, int64_t source_end)
+{
+ audio_thread->add_wave(pixmap, pane_number,
+ indexable, x, channel, source_start, source_end);
+}
+
+void ResourceThread::run()
+{
+ audio_thread->run();
+ video_thread->run();
+}
+
+void ResourceThread::stop()
+{
+ audio_thread->stop();
+ video_thread->stop();
+}
+
+void ResourceThread::reset(int pane_number, int indexes_only)
+{
+ audio_thread->reset(pane_number);
+ if( !indexes_only )
+ video_thread->reset(pane_number);
+}
+
+void ResourceThread::close_indexable(Indexable *idxbl)
+{
+ if( audio_thread && audio_thread->render_engine_id == idxbl->id )
+ audio_thread->close_render_engine();
+ if( video_thread && video_thread->render_engine_id == idxbl->id )
+ video_thread->close_render_engine();
+}