X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbctrace.h;h=51dafd7466bf4ca6174636a9340a1a948b68c791;hb=17b4e5a06157865391c2d07b552b81d84665bcae;hp=e92c09760ff74c497e20daefb0c1dab95169a502;hpb=a10be9aeb2993b4ba5569a7dc6a4a4804c54bf02;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bctrace.h b/cinelerra-5.1/guicast/bctrace.h index e92c0976..51dafd74 100644 --- a/cinelerra-5.1/guicast/bctrace.h +++ b/cinelerra-5.1/guicast/bctrace.h @@ -8,6 +8,12 @@ #include "cstrdup.h" #include +#ifdef BOOBY +#define BT if( top_level->display_lock_owner != pthread_self() ) booby(); +void booby(); +#else +#define BT +#endif class BC_Trace { @@ -48,6 +54,9 @@ public: static void dump_locks(FILE *fp=stdout); static void dump_buffers(FILE *fp=stdout); static void dump_threads(FILE *fp=stdout); + + static void dump_shm_stat(const char *fn, FILE *fp=stdout); + static void dump_shm_stats(FILE *fp=stdout); }; class bc_trace_list : public List { @@ -217,24 +226,17 @@ public: static void dbg_add(pthread_t tid, pthread_t owner, const char *nm); static void dbg_del(pthread_t tid); static void reset() { the_list.remove_all_objects(); TheLocker::reset(); } - TheList() {} - ~TheList() { reset(); } -}; - -class TheChk { -public: - static TheChk the_chk; - - TheChk() {} - ~TheChk() { - int i = TheList::the_list.size(); + void check() { + int i = the_list.size(); if( !i ) return; printf("unjoined tids / owner %d\n", i); while( --i >= 0 ) printf(" %016lx / %016lx %s\n", - (unsigned long)TheList::the_list[i]->tid, - (unsigned long)TheList::the_list[i]->owner, - TheList::the_list[i]->name); + (unsigned long)the_list[i]->tid, + (unsigned long)the_list[i]->owner, + the_list[i]->name); } + TheList() {} + ~TheList() { check(); reset(); } }; #endif