X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fresizetrackthread.C;h=f8e3de367561a23568d7089204a981b54cfd1d6b;hp=57dab4c8f571f0dc557738b62a0a32d34f046942;hb=HEAD;hpb=318256a48938064b695268d03396977739ef4724 diff --git a/cinelerra-5.1/cinelerra/resizetrackthread.C b/cinelerra-5.1/cinelerra/resizetrackthread.C index 57dab4c8..f8e3de36 100644 --- a/cinelerra-5.1/cinelerra/resizetrackthread.C +++ b/cinelerra-5.1/cinelerra/resizetrackthread.C @@ -2,21 +2,21 @@ /* * CINELERRA * Copyright (C) 2008 Adam Williams - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * */ #include "asset.h" @@ -60,6 +60,12 @@ ResizeVTrackThread::~ResizeVTrackThread() void ResizeVTrackThread::start_window(int w, int h, int w1, int h1) { + if( window && running() ) { + window->lock_window(); + window->raise_window(); + window->unlock_window(); + return; + } this->w = w; this->h = h; this->w1 = w1; this->h1 = h1; w_scale = h_scale = 1; @@ -69,24 +75,18 @@ void ResizeVTrackThread::start_window(int w, int h, int w1, int h1) void ResizeVTrackThread::run() { - ResizeVTrackWindow *window = this->window = - new ResizeVTrackWindow(mwindow, - this, + window = new ResizeVTrackWindow(mwindow, this, mwindow->gui->get_abs_cursor_x(1), mwindow->gui->get_abs_cursor_y(1)); window->create_objects(); int result = window->run_window(); - this->window = 0; - delete window; - - if(!result) - { + delete window; window = 0; + if(!result) { update(); } - if(((w % 4) || - (h % 4)) && + if(((w % 4) || (h % 4)) && mwindow->edl->session->playback_config->vconfig->driver == PLAYBACK_X11_GL) { MainError::show_error( @@ -98,11 +98,11 @@ void ResizeVTrackThread::run() -ResizeVTrackWindow::ResizeVTrackWindow(MWindow *mwindow, +ResizeVTrackWindow::ResizeVTrackWindow(MWindow *mwindow, ResizeVTrackThread *thread, int x, int y) - : BC_Window(_(PROGRAM_NAME ": Resize Track"), + : BC_Window(_(PROGRAM_NAME ": Resize Track"), x - 320 / 2, y - get_resources()->ok_images[0]->get_h() + 100 / 2, 400, get_resources()->ok_images[0]->get_h() + 100, 400, get_resources()->ok_images[0]->get_h() + 100, @@ -118,9 +118,8 @@ ResizeVTrackWindow::~ResizeVTrackWindow() void ResizeVTrackWindow::create_objects() { - int x = 10, y = 10; - lock_window("ResizeVTrackWindow::create_objects"); + int x = 10, y = 10; BC_Title *size_title = new BC_Title(x, y, _("Size:")); add_subwindow(size_title); int x1 = x + size_title->get_w(); @@ -154,8 +153,8 @@ void ResizeVTrackWindow::create_objects() unlock_window(); } -void ResizeVTrackWindow::update(int changed_scale, - int changed_size, +void ResizeVTrackWindow::update(int changed_scale, + int changed_size, int changed_all) { //printf("ResizeVTrackWindow::update %d %d %d\n", changed_scale, changed_size, changed_all); @@ -181,9 +180,9 @@ void ResizeVTrackWindow::update(int changed_scale, -ResizeVTrackSwap::ResizeVTrackSwap(ResizeVTrackWindow *gui, - ResizeVTrackThread *thread, - int x, +ResizeVTrackSwap::ResizeVTrackSwap(ResizeVTrackWindow *gui, + ResizeVTrackThread *thread, + int x, int y) : BC_Button(x, y, thread->mwindow->theme->get_image_set("swap_extents")) { @@ -209,7 +208,7 @@ int ResizeVTrackSwap::handle_event() -ResizeVTrackWidth::ResizeVTrackWidth(ResizeVTrackWindow *gui, +ResizeVTrackWidth::ResizeVTrackWidth(ResizeVTrackWindow *gui, ResizeVTrackThread *thread, int x, int y) @@ -225,7 +224,7 @@ int ResizeVTrackWidth::handle_event() return 1; } -ResizeVTrackHeight::ResizeVTrackHeight(ResizeVTrackWindow *gui, +ResizeVTrackHeight::ResizeVTrackHeight(ResizeVTrackWindow *gui, ResizeVTrackThread *thread, int x, int y) @@ -242,7 +241,7 @@ int ResizeVTrackHeight::handle_event() } -ResizeVTrackScaleW::ResizeVTrackScaleW(ResizeVTrackWindow *gui, +ResizeVTrackScaleW::ResizeVTrackScaleW(ResizeVTrackWindow *gui, ResizeVTrackThread *thread, int x, int y) @@ -258,7 +257,7 @@ int ResizeVTrackScaleW::handle_event() return 1; } -ResizeVTrackScaleH::ResizeVTrackScaleH(ResizeVTrackWindow *gui, +ResizeVTrackScaleH::ResizeVTrackScaleH(ResizeVTrackWindow *gui, ResizeVTrackThread *thread, int x, int y) @@ -299,7 +298,8 @@ void ResizeTrackThread::start_window(Track *track) void ResizeTrackThread::update() { - mwindow->resize_track(track, w, h); + if( mwindow->edl->tracks->track_exists(track) ) + mwindow->resize_track(track, w, h); } @@ -340,7 +340,6 @@ ResizeAssetButton::ResizeAssetButton(AssetEditWindow *fwindow, int x, int y) { resize_asset_thread = 0; this->fwindow = fwindow; - set_underline(0); } ResizeAssetButton::~ResizeAssetButton() @@ -350,7 +349,8 @@ ResizeAssetButton::~ResizeAssetButton() int ResizeAssetButton::handle_event() { - resize_asset_thread = new ResizeAssetThread(fwindow); + if( !resize_asset_thread ) + resize_asset_thread = new ResizeAssetThread(fwindow); resize_asset_thread->start_window(fwindow->asset_edit->changed_params); return 1; }