X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fvmodule.C;h=3ef17f0436d714bf0aa4175ed9f6e292a3f1cf89;hb=255afe5bf50d8e2d10075c0b8ab0f88efbe91570;hp=0c8e1b7fdec53176caf4bb0f0288f17ecf4f15e3;hpb=9d832a1fff11b11aaa1108c460690ed05e2bdc05;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/vmodule.C b/cinelerra-5.1/cinelerra/vmodule.C index 0c8e1b7f..3ef17f04 100644 --- a/cinelerra-5.1/cinelerra/vmodule.C +++ b/cinelerra-5.1/cinelerra/vmodule.C @@ -159,9 +159,10 @@ int VModule::import_frame(VFrame *output, VEdit *current_edit, __LINE__, nested_edl, current_edit->nested_edl); // Convert requested direction to command - if(renderengine->command->command == CURRENT_FRAME) + if( renderengine->command->command == CURRENT_FRAME || + renderengine->command->command == LAST_FRAME ) { - command = CURRENT_FRAME; + command = renderengine->command->command; } else if(direction == PLAY_REVERSE) @@ -222,7 +223,14 @@ int VModule::import_frame(VFrame *output, VEdit *current_edit, } if(debug) printf("VModule::import_frame %d\n", __LINE__); - if(!output) printf("VModule::import_frame %d output=%p\n", __LINE__, output); + if( output ) { + if( use_opengl ) + x11_device->clear_input(output); + else + output->clear_frame(); + } + else + printf("VModule::import_frame %d output=%p\n", __LINE__, output); if(current_edit && (current_edit->asset || @@ -293,7 +301,7 @@ int VModule::import_frame(VFrame *output, VEdit *current_edit, } else { - max_position = Units::to_int64(nested_edl->tracks->total_playable_length() * + max_position = Units::to_int64(nested_edl->tracks->total_length() * frame_rate - 1); } @@ -478,12 +486,9 @@ int VModule::import_frame(VFrame *output, VEdit *current_edit, if(!(*input)) { - (*input) = new VFrame(0, - -1, - asset_w, - asset_h, - get_edl()->session->color_model, - -1); + (*input) = + new VFrame(asset_w, asset_h, + get_edl()->session->color_model); } @@ -873,15 +878,6 @@ current_cmodel); else // Source not found { - if(debug) printf("VModule::import_frame %d\n", __LINE__); - if(use_opengl) - { - x11_device->clear_input(output); - } - else - { - output->clear_frame(); - } result = 1; } @@ -989,12 +985,9 @@ int VModule::render(VFrame *output, // Load incoming frame if(!(*transition_input)) { - (*transition_input) = new VFrame(0, - -1, - track->track_w, - track->track_h, - get_edl()->session->color_model, - -1); + (*transition_input) = + new VFrame(track->track_w, track->track_h, + get_edl()->session->color_model); } (*transition_input)->copy_stacks(output);