fix cwin bksp=del key, fix mode keyframe in rev play, update ru
[goodguy/history.git] / cinelerra-5.1 / cinelerra / virtualvnode.C
index 1fb4846140f52c4fdc14393dbbe6f1ab2173f8f4..e3c69f1e755086abc84c5a011bbce0798e2c4386 100644 (file)
@@ -353,17 +353,21 @@ void VirtualVNode::render_mask(VFrame *output_temp,
                return;
        }
 
-       if(use_opengl)
-       {
+       if(use_opengl) {
+               if( !((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->can_mask(
+                               start_position_project, keyframe_set) )
+                       use_opengl = 0;
+                       
+       }
+       if(use_opengl) {
                ((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->do_mask(
-                       output_temp, start_position_project,
-                       keyframe_set, keyframe, keyframe);
+                               output_temp, start_position_project, keyframe_set,
+                               keyframe, keyframe);
        }
-       else
-       {
+       else {
 // Revert to software
                masker->do_mask(output_temp, start_position_project,
-                       keyframe_set, keyframe, keyframe);
+                               keyframe_set, keyframe, keyframe);
        }
 }
 
@@ -387,8 +391,9 @@ int VirtualVNode::render_projector(VFrame *input, VFrame *output,
 
        if(output)
        {
-               ((VTrack*)track)->calculate_output_transfer(start_position_project,
-                       renderengine->command->get_direction(),
+               int direction = renderengine->command->get_direction();
+               ((VTrack*)track)->calculate_output_transfer(
+                       start_position_project, direction,
                        in_x1, in_y1, in_x2, in_y2,
                        out_x1, out_y1, out_x2, out_y2);
 
@@ -401,11 +406,10 @@ int VirtualVNode::render_projector(VFrame *input, VFrame *output,
                if(out_x2 > out_x1 && out_y2 > out_y1 && 
                        in_x2 > in_x1 && in_y2 > in_y1)
                {
-                       int direction = renderengine->command->get_direction();
                        IntAuto *mode_keyframe = 0;
                        mode_keyframe = 
                                (IntAuto*)track->automation->autos[AUTOMATION_MODE]->get_prev_auto(
-                                       start_position_project, direction, (Auto* &)mode_keyframe);
+                                       start_position_project, PLAY_FORWARD, (Auto* &)mode_keyframe);
 
                        int mode = mode_keyframe->value;