prevent popup deactivation while button_down
[goodguy/history.git] / cinelerra-5.0 / cinelerra / dbwindow.C
index 5c876bf1f692e36d3fc2baddb1aa078fa16877a5..2a6395cfe24d3a47d6db699d389135bd6c2c1d8f 100644 (file)
@@ -338,7 +338,7 @@ move_column_event()
 }
 
 DbWindowVIcon::DbWindowVIcon()
- : VIcon(SWIDTH, SHEIGHT, 24)
+ : VIcon(SWIDTH, SHEIGHT, VICON_RATE)
 {
        lbox = 0;
        item = 0;
@@ -389,14 +389,13 @@ VFrame *DbWindowVIcon::frame()
 {
        if( seq_no >= images.size() )
                load_frames(lbox->gui->dwindow->mdb);
-       return images[seq_no];
+       return *images[seq_no];
 }
 
-int64_t DbWindowVIcon::next_frame(int n)
+int64_t DbWindowVIcon::set_seq_no(int64_t no)
 {
-       age += n * period;
-       if( (seq_no+=n) >= clip_size ) seq_no = 0;
-       return seq_no;
+       if( no >= clip_size ) no = 0;
+       return seq_no = no;
 }
 
 
@@ -418,13 +417,14 @@ void DbWindowVIcon::read_frames(DbWindow::MDb *mdb)
                int frame_id = mdb->timeline_frame_id();
                if( frame_id < 0 ) continue;
                int swidth = (SWIDTH+1) & ~1, sheight = (SHEIGHT+1) & ~1;
-               VFrame *frame = new VFrame(swidth, sheight, BC_YUV420P);
-               memset(frame->get_y(),0x00,swidth * sheight);
-               memset(frame->get_u(),0x80,swidth/2 * sheight/2);
-               memset(frame->get_v(),0x80,swidth/2 * sheight/2);
-               uint8_t *yp = frame->get_y();  int sw = -1, sh = -1;
+               VIFrame *vifrm = new VIFrame(swidth, sheight, BC_YUV420P);
+               VFrame *img = *vifrm;
+               memset(img->get_y(),0x00,swidth * sheight);
+               memset(img->get_u(),0x80,swidth/2 * sheight/2);
+               memset(img->get_v(),0x80,swidth/2 * sheight/2);
+               uint8_t *yp = img->get_y();  int sw = -1, sh = -1;
                mdb->get_image(frame_id, yp, sw, sh);
-               images.append(frame);
+               images.append(vifrm);
        }
 }
 
@@ -448,7 +448,7 @@ update_image(DbWindowGUI *gui, int clip_id)
                        this->prefix_size = mdb->clip_prefix_size();
                        this->suffix_offset = mdb->clip_frames() - clip_size;
                        double framerate = mdb->clip_framerate();
-                       this->period = 1000. / (framerate > 0 ? framerate : 24);
+                       this->frame_rate = framerate > 0 ? framerate : VICON_RATE;
                        gui->vicon_thread->add_vicon(this);
                }
                mdb->detach();