#include <sys/resource.h>
#ifdef LEAKER
-#define STRC(v) printf("==new %p from %p sz %jd\n", v, __builtin_return_address(0), n)
+#if 0 // track allocators
+#include <execinfo.h>
+#define BT_BUF_SIZE 100
+static void leaker()
+{
+ void *buffer[BT_BUF_SIZE];
+ int nptrs = backtrace(buffer, BT_BUF_SIZE);
+ char **trace = backtrace_symbols(buffer, nptrs);
+ if( !trace ) return;
+ for( int i=0; i<nptrs; ) printf("%s ", trace[i++]);
+ printf("\n");
+ free(trace);
+}
+#define STRB ;leaker()
+#else
+#define STRB
+#endif
+#define STRC(v) printf("==new %p from %p sz %jd\n", v, __builtin_return_address(0), n)STRB
#define STRD(v) printf("==del %p from %p\n", v, __builtin_return_address(0))
void *operator new(size_t n) { void *vp = malloc(n); STRC(vp); bzero(vp,n); return vp; }
void operator delete(void *t) { STRD(t); free(t); }
//PRINT_TRACE
mwindow->gui->lock_window("main");
//PRINT_TRACE
- mwindow->load_filenames(filenames, LOADMODE_REPLACE);
+ mwindow->load_filenames(filenames,
+ LOADMODE_REPLACE, LOADMODE_EDL_CLIP);
//PRINT_TRACE
if( filenames->size() == 1 )
mwindow->gui->mainmenu->add_load(filenames->get(0));
long cin_timezone;
+static float get_layout_scale()
+{
+ char config_path[BCTEXTLEN];
+ sprintf(config_path,"%s/%s", File::get_config_path(), CONFIG_FILE);
+ FILE *fp = fopen(config_path,"r");
+ if( !fp ) return 0;
+ float scale = 0;
+ char line[BCTEXTLEN];
+ line[BCTEXTLEN-1] = 0;
+ while( fgets(line, BCTEXTLEN-1, fp) ) {
+ if( !strncmp(line, "LAYOUT_SCALE ",12+1) ) {
+ scale = atof(line+12);
+ break;
+ }
+ }
+ fclose(fp);
+ return scale;
+}
+
int main(int argc, char *argv[])
{
// handle command line arguments first
srand(time(0));
ArrayList<char*> filenames;
+ filenames.set_array_delete();
FileSystem fs;
time_t st; time(&st);
}
}
-
+ float scale = operation == DO_GUI ?
+ get_layout_scale() : 1;
+ // runs XInitThreads
+ BC_WindowBase::init_resources(scale);
if( operation == DO_GUI ||
operation == DO_DEAMON || operation == DO_DEAMON_FG ||
break; }
case DO_BATCHRENDER: {
- BatchRenderThread *thread = new BatchRenderThread;
+ BatchRenderThread *thread = new BatchRenderThread(0);
thread->start_rendering(config_path,
batch_path);
break; }
MWindow mwindow;
mwindow.create_objects(1, !filenames.total, config_path);
CommandLineThread *thread = 0;
- if( mwindow.preferences->perpetual_session && load_perpetual )
+ if( load_perpetual )
mwindow.load_undo_data();
//SET_TRACE
// load the initial files on seperate tracks
done = 1;
mwindow.save_defaults();
- if( mwindow.preferences->perpetual_session )
- mwindow.save_undo_data();
+ mwindow.save_undo_data();
//PRINT_TRACE
filenames.remove_all_objects();
delete thread;
filenames.remove_all_objects();
Units::finit();
+ BC_WindowBase::finit_resources();
time_t et; time(&et);
long dt = et - st;