fix valgrind memory leaks/reports, add cache to dump, fix hw probe frame leak, startu...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / awindowgui.C
index dc884e55896a2d0729c7d07a58f15d7ab97dae87..1aa57e35b5ebf3eeb42ede875813adb50ec7a509 100644 (file)
@@ -109,6 +109,7 @@ AssetVIcon::AssetVIcon(AssetPicon *picon, int w, int h, double framerate, int64_
        this->picon = picon;
        this->length = length;
        temp = 0;
+       broken = 0;
 }
 
 AssetVIcon::~AssetVIcon()
@@ -119,6 +120,7 @@ AssetVIcon::~AssetVIcon()
 
 VFrame *AssetVIcon::frame()
 {
+       if( broken ) return 0;
        AssetVIconThread *avt = picon->gui->vicon_thread;
        Indexable *idxbl = picon->indexable;
        Asset *asset = idxbl && idxbl->is_asset ? (Asset *)idxbl : 0;
@@ -161,7 +163,10 @@ VFrame *AssetVIcon::frame()
        if( seq_no >= images.size() ) {
                MWindow *mwindow = picon->mwindow;
                File *file = mwindow->video_cache->check_out(asset, mwindow->edl, 1);
-               if( !file ) return 0;
+               if( !file ) {
+                       broken = 1;
+                       return 0;
+               }
                if( temp && (temp->get_w() != asset->width || temp->get_h() != asset->height) ) {
                        delete temp;  temp = 0;
                }
@@ -929,7 +934,7 @@ void AssetPicon::create_objects()
                else {
                        edl = (EDL *)indexable;
                        cp += sprintf(cp, "edl:");
-                       set_color(get_color() ^ 0xCC9955);
+//                     set_color(get_color() ^ 0xCC9955);
                }
                fs.extract_name(cp, indexable->path);
                set_text(name);
@@ -2648,12 +2653,18 @@ int AWindowFolders::load_expanders()
        char expanders_path[BCTEXTLEN];
        mwindow->create_defaults_path(expanders_path, EXPANDERS_FILE);
        FILE *fp = fopen(expanders_path, "r");
+       if( !fp ) {
+               snprintf(expanders_path, sizeof(expanders_path), "%s/%s",
+                       File::get_cindat_path(), EXPANDERS_FILE);
+               char *cp = strrchr(expanders_path,'.');
+               if( cp ) strcpy(cp+1, mwindow->cin_lang);
+               fp = fopen(expanders_path, "r");
+       }
        if( !fp ) {
                snprintf(expanders_path, sizeof(expanders_path), "%s/%s",
                        File::get_cindat_path(), EXPANDERS_FILE);
                fp = fopen(expanders_path, "r");
        }
-
        if( !fp ) return 1;
        const char tab = '\t';
        char line[BCTEXTLEN];   line[0] = 0;