refresh frame fix, dblclk proxy viewer fix, vicon refresh fix for awdw resize, fix...
authorGood Guy <[email protected]>
Thu, 23 Aug 2018 00:41:12 +0000 (18:41 -0600)
committerGood Guy <[email protected]>
Thu, 23 Aug 2018 00:41:12 +0000 (18:41 -0600)
cinelerra-5.1/bld.sh
cinelerra-5.1/cinelerra/awindowgui.C
cinelerra-5.1/cinelerra/canvas.C
cinelerra-5.1/cinelerra/cwindowgui.C
cinelerra-5.1/cinelerra/timebar.C
cinelerra-5.1/cinelerra/timebar.h
cinelerra-5.1/cinelerra/vtimebar.h
cinelerra-5.1/guicast/vicon.C

index 7c8837bfbf9a6b4443f93c38c35299aad8851b4d..b8a80d6bbaaa2d1b31b41ca84f46b7375a986367 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/bash
 ( ./autogen.sh
-  ./configure --with-single-user --with-booby
+  ./configure --with-single-user
   make && make install ) 2>&1 | tee log
 mv Makefile Makefile.cfg
 cp Makefile.devel Makefile
index 409ba26ff35884b54f1014c172628ac44d7be3ba..9f966f75f6a8116087033dd530b7abd62979aa85 100644 (file)
@@ -173,12 +173,12 @@ int64_t AssetVIcon::set_seq_no(int64_t no)
 int AssetVIcon::get_vx()
 {
        BC_ListBox *lbox = picon->gui->asset_list;
-       return lbox->get_item_x(picon);
+       return lbox->get_item_x(picon) + ICON_MARGIN;
 }
 int AssetVIcon::get_vy()
 {
        BC_ListBox *lbox = picon->gui->asset_list;
-       return lbox->get_item_y(picon);
+       return lbox->get_item_y(picon) + ICON_MARGIN;
 }
 
 void AssetVIcon::load_audio()
@@ -1136,6 +1136,10 @@ int AWindowGUI::resize_event(int w, int h)
 //     view->reposition_window(x, y);
 
        BC_WindowBase::resize_event(w, h);
+       int x0 = 0, x1 = asset_list->get_w();
+       int y0 = asset_list->get_title_h();
+       int y1 = asset_list->get_h();
+       vicon_thread->set_drawing_area(x0,y0, x1,y1);
        return 1;
 }
 
@@ -1672,7 +1676,7 @@ EDL *AWindowGUI::collect_proxy(Indexable *indexable)
        int proxy_scale = mwindow->edl->session->proxy_scale;
        ProxyRender::from_proxy_path(path, proxy_asset, proxy_scale);
        Asset *unproxy_asset = mwindow->edl->assets->get_asset(path);
-       if( !unproxy_asset || !unproxy_asset->channels ) return 0;
+       if( !unproxy_asset || !unproxy_asset->layers ) return 0;
 // make a clip from proxy video tracks and unproxy audio tracks
        EDL *proxy_edl = new EDL(mwindow->edl);
        proxy_edl->create_objects();
index 85d4e6f51ce453286e7d2636fbf22d00d021d7ce..0d738c808de59187730041c66cfcbb245e841033 100644 (file)
@@ -857,9 +857,11 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
        if( use_opengl )
                best_color_model = BC_RGB888;
 
+       int out_w = output_frame->get_w();
+       int out_h = output_frame->get_h();
        if( refresh_frame &&
-          (refresh_frame->get_w() != device->out_w ||
-           refresh_frame->get_h() != device->out_h ||
+          (refresh_frame->get_w() != out_w ||
+           refresh_frame->get_h() != out_h ||
            refresh_frame->get_color_model() != best_color_model ) ) {
 // x11 direct render uses BC_BGR8888, use tranfer_from to remap
                delete refresh_frame;  refresh_frame = 0;
@@ -867,7 +869,7 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
 
        if( !refresh_frame ) {
                refresh_frame =
-                       new VFrame(device->out_w, device->out_h, best_color_model);
+                       new VFrame(out_w, out_h, best_color_model);
        }
 
        if( use_opengl ) {
@@ -879,7 +881,7 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
                get_canvas()->lock_window(" Canvas::output_refresh");
        }
        else
-               refresh_frame->transfer_from(output_frame);
+               refresh_frame->copy_from(output_frame);
 }
 
 
index 2b11f38b4a36f314eb0e7ab7adb662ea29c89405..c51eb0c3d155fc8bcef72a316efbc8521689849d 100644 (file)
@@ -1091,12 +1091,13 @@ void CWindowCanvas::draw_refresh(int flush)
                                                (int)out_x1,
                                                (int)out_y1,
                                                (int)(out_x2 - out_x1),
-                                               (int)(out_y2 - out_y1),
-                                               (int)in_x1,
-                                               (int)in_y1,
-                                               (int)(in_x2 - in_x1),
-                                               (int)(in_y2 - in_y1),
-                                               0);
+                                               (int)(out_y2 - out_y1));
+// if refresh_frame session geometry...
+//                                             (int)in_x1,
+//                                             (int)in_y1,
+//                                             (int)(in_x2 - in_x1),
+//                                             (int)(in_y2 - in_y1),
+//                                             0);
                        }
                }
                else
index 8d8bfc7c6a58f7deeac606fba58980831e092370..e386bea54120c4ffb2e6d769aa3a2105ba29a769 100644 (file)
@@ -24,6 +24,7 @@
 #include "cplayback.h"
 #include "cursors.h"
 #include "cwindow.h"
+#include "cwindowgui.h"
 #include "edl.h"
 #include "edlsession.h"
 #include "filexml.h"
@@ -205,12 +206,12 @@ int64_t TimeBar::position_to_pixel(double position)
 double TimeBar::pixel_to_position(int pixel)
 {
        if( pane ) {
-               pixel += mwindow->edl->local_session->view_start[pane->number];
+               pixel += get_edl()->local_session->view_start[pane->number];
        }
 
        return (double)pixel *
-               mwindow->edl->local_session->zoom_sample /
-               mwindow->edl->session->sample_rate;
+               get_edl()->local_session->zoom_sample /
+               get_edl()->session->sample_rate;
 }
 
 void TimeBar::update_labels()
@@ -277,31 +278,33 @@ void TimeBar::update_labels()
 
 void TimeBar::update_highlights()
 {
+       EDL *edl = get_edl();
+       if( !edl ) return;
        for( int i = 0; i < labels.total; i++ ) {
                LabelGUI *label = labels.values[i];
-               if( mwindow->edl->equivalent(label->position,
-                               mwindow->edl->local_session->get_selectionstart(1)) ||
-                   mwindow->edl->equivalent(label->position,
-                               mwindow->edl->local_session->get_selectionend(1)) ) {
+               if( edl->equivalent(label->position,
+                               edl->local_session->get_selectionstart(1)) ||
+                   edl->equivalent(label->position,
+                               edl->local_session->get_selectionend(1)) ) {
                        if( !label->get_value() ) label->update(1);
                }
                else
                        if( label->get_value() ) label->update(0);
        }
 
-       if( mwindow->edl->equivalent(mwindow->edl->local_session->get_inpoint(),
-                       mwindow->edl->local_session->get_selectionstart(1)) ||
-               mwindow->edl->equivalent(mwindow->edl->local_session->get_inpoint(),
-                       mwindow->edl->local_session->get_selectionend(1)) ) {
+       if( edl->equivalent(edl->local_session->get_inpoint(),
+                       edl->local_session->get_selectionstart(1)) ||
+               edl->equivalent(edl->local_session->get_inpoint(),
+                       edl->local_session->get_selectionend(1)) ) {
                if( in_point ) in_point->update(1);
        }
        else
                if( in_point ) in_point->update(0);
 
-       if( mwindow->edl->equivalent(mwindow->edl->local_session->get_outpoint(),
-                       mwindow->edl->local_session->get_selectionstart(1)) ||
-               mwindow->edl->equivalent(mwindow->edl->local_session->get_outpoint(),
-                       mwindow->edl->local_session->get_selectionend(1)) ) {
+       if( edl->equivalent(edl->local_session->get_outpoint(),
+                       edl->local_session->get_selectionstart(1)) ||
+               edl->equivalent(edl->local_session->get_outpoint(),
+                       edl->local_session->get_selectionend(1)) ) {
                if( out_point ) out_point->update(1);
        }
        else
@@ -393,7 +396,7 @@ void TimeBar::update(int flush)
 //printf("TimeBar::update %d %d\n", __LINE__, x);
                double position = pixel_to_position(x);
 
-               position = get_edl()->align_to_frame(position, 0);
+               position = mwindow->edl->align_to_frame(position, 0);
                pixel = position_to_pixel(position);
                update_clock(position);
        }
@@ -692,7 +695,7 @@ int TimeBar::button_press_event()
                        stop_playback();
 
 // Select region between two labels
-                       if( get_double_click() ) {
+                       if( !is_vwindow() && get_double_click() ) {
                                int x = get_relative_cursor_x();
                                double position = pixel_to_position(x);
 // Test labels
@@ -815,14 +818,14 @@ void TimeBar::handle_mwindow_drag()
 int TimeBar::select_region(double position)
 {
        Label *start = 0, *end = 0, *current;
-       for( current = mwindow->edl->labels->first; current; current = NEXT ) {
+       for( current = get_edl()->labels->first; current; current = NEXT ) {
                if( current->position > position ) {
                        end = current;
                        break;
                }
        }
 
-       for( current = mwindow->edl->labels->last ; current; current = PREVIOUS ) {
+       for( current = get_edl()->labels->last ; current; current = PREVIOUS ) {
                if( current->position <= position ) {
                        start = current;
                        break;
@@ -832,28 +835,32 @@ int TimeBar::select_region(double position)
 // Select region
        if( end != start ) {
                if( !start )
-                       mwindow->edl->local_session->set_selectionstart(0);
+                       get_edl()->local_session->set_selectionstart(0);
                else
-                       mwindow->edl->local_session->set_selectionstart(start->position);
+                       get_edl()->local_session->set_selectionstart(start->position);
 
                if( !end )
-                       mwindow->edl->local_session->set_selectionend(mwindow->edl->tracks->total_length());
+                       get_edl()->local_session->set_selectionend(get_edl()->tracks->total_length());
                else
-                       mwindow->edl->local_session->set_selectionend(end->position);
+                       get_edl()->local_session->set_selectionend(end->position);
        }
        else
        if( end || start ) {
-               mwindow->edl->local_session->set_selectionstart(start->position);
-               mwindow->edl->local_session->set_selectionend(start->position);
+               get_edl()->local_session->set_selectionstart(start->position);
+               get_edl()->local_session->set_selectionend(start->position);
        }
 
 // Que the CWindow
+       mwindow->cwindow->gui->lock_window("TimeBar::select_region");
        mwindow->cwindow->update(1, 0, 0);
+       mwindow->cwindow->gui->unlock_window();
+       mwindow->gui->lock_window("TimeBar::select_region");
        mwindow->gui->hide_cursor(0);
        mwindow->gui->draw_cursor(1);
        mwindow->gui->flash_canvas(0);
        mwindow->gui->activate_timeline();
        mwindow->gui->zoombar->update();
+       mwindow->gui->unlock_window();
        update_highlights();
        return 0;
 }
index 0a047ff72f3eb52ffa8a321543c6d6ab03fec18a..40a0220a082ac2f52da410f70ae1a0dc220198ae 100644 (file)
@@ -154,6 +154,7 @@ public:
 // Get highlight status when the cursor is over the timeline.
        virtual double test_highlight();
        virtual int has_preview() { return 0; }
+       virtual int is_vwindow() { return 0; }
 
 
        void update_labels();
index 9247274bdabb9b79533353f307df6d7b5a02a3bc..f17ba6779dd4725aff44874c488aa151cf76a2e4 100644 (file)
@@ -44,6 +44,7 @@ public:
        double pixel_to_position(int pixel);
        void update_cursor();
        int has_preview() { return 1; }
+       int is_vwindow() { return 1; }
        double test_highlight();
 
        VWindowGUI *gui;
index b7fd0f6c70bd0dd8ce4e8d06b7fadd4b05cf83f7..9c41ccf1ea915d20548a0f755f6676ea92249abe 100644 (file)
@@ -292,7 +292,10 @@ draw(VIcon *vicon)
 
 void VIconThread::hide_vicons(int v)
 {
-       for( int i=0; i<t_heap.size(); ++i ) t_heap[i]->hidden = v;
+       for( int i=0; i<t_heap.size(); ++i ) {
+               t_heap[i]->hidden = v;
+               t_heap[i]->age = 0;
+       }
 }
 
 void VIconThread::