version update, fix vaapi spelling, zoom fixes
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / zwindowgui.C
index 1ffa772d77e2cb0c31a0b6ba8def317abd071c80..b6cccd03f82352ce4f285a98ccc267bf754f644e 100644 (file)
@@ -96,26 +96,23 @@ int ZWindowGUI::keypress_event()
                close_event();
                return 1;
        }
-       unlock_window();
        int result = 1;
        switch( key ) {
-       case 'f':
-               if( canvas->get_fullscreen() )
-                       canvas->stop_fullscreen();
-               else
-                       canvas->start_fullscreen();
-               break;
+       case 'f': {
+               int on = canvas->get_fullscreen() ? 0 : 1;
+               canvas->set_fullscreen(on, 1);
+               break; }
        case ESC:
-               if( canvas->get_fullscreen() )
-                       canvas->stop_fullscreen();
+               canvas->set_fullscreen(0, 1);
                break;
        default:
+               unlock_window();
                mwindow->gui->lock_window("ZWindowGUI::keypress_event");
                result = mwindow->gui->mbuttons->transport->do_keypress(key);
                mwindow->gui->unlock_window();
+               lock_window("ZWindowGUI::keypress_event 1");
        }
 
-       lock_window("ZWindowGUI::keypress_event 1");
        return result;
 }
 
@@ -248,3 +245,17 @@ void ZWindowCanvas::draw_refresh(int flush)
                cvs->flash(flush);
 }
 
+float ZWindowCanvas::get_auto_zoom()
+{
+       EDL *edl = gui->zwindow->edl;
+       if( !edl ) edl = mwindow->edl;
+       float conformed_w, conformed_h;
+       edl->calculate_conformed_dimensions(0, conformed_w, conformed_h);
+       BC_WindowBase *window = get_canvas();
+       int cw = window ? window->get_w() : w;
+       int ch = window ? window->get_h() : h;
+       float zoom_x = cw / conformed_w;
+       float zoom_y = ch / conformed_h;
+       return zoom_x < zoom_y ? zoom_x : zoom_y;
+}
+