improve resize flash operation, fixup xv grab/ungrab, fixup label updates
[goodguy/history.git] / cinelerra-5.1 / guicast / bcsignals.C
index e2a8b149c42659c1744496f814e19c08797ef2aa..793666cd1ca53262be65b034680817b939e05bce 100644 (file)
@@ -21,7 +21,9 @@
 
 #include "bcsignals.h"
 #include "bcwindowbase.h"
+#include "bccmodels.h"
 #include "bckeyboard.h"
+#include "bcresources.h"
 
 #include <ctype.h>
 #include <dirent.h>
@@ -126,14 +128,14 @@ static bc_buffertrace_t* new_bc_buffertrace(int size, void *ptr, const char *loc
        return result;
 }
 
-static void bc_copy_textfile(FILE *ofp, const char *fmt,...)
+static void bc_copy_textfile(int lines, FILE *ofp, const char *fmt,...)
 {
        va_list ap;    va_start(ap, fmt);
        char bfr[BCTEXTLEN];  vsnprintf(bfr, sizeof(bfr), fmt, ap);
        va_end(ap);
        FILE *ifp = fopen(bfr,"r");
        if( !ifp ) return;
-       while( fgets(bfr,sizeof(bfr),ifp) ) fputs(bfr,ofp);
+       while( --lines >= 0 && fgets(bfr,sizeof(bfr),ifp) ) fputs(bfr,ofp);
        fclose(ifp);
 }
 
@@ -418,6 +420,10 @@ void BC_Signals::set_sighup_exit(int enable)
 BC_Signals::BC_Signals()
 {
 }
+BC_Signals::~BC_Signals()
+{
+  BC_CModels::bcxfer_stop_slicers();
+}
 
 void BC_Signals::dump_traces(FILE *fp)
 {
@@ -502,8 +508,8 @@ int BC_Signals::x_error_handler(Display *display, XErrorEvent *event)
 {
        char string[1024];
        XGetErrorText(event->display, event->error_code, string, 1024);
-       fprintf(stderr, "BC_Signals::x_error_handler: error_code=%d opcode=%d,%d %s\n",
-               event->error_code, event->request_code, event->minor_code, string);
+       fprintf(stderr, "BC_Signals::x_error_handler: error_code=%d opcode=%d,%d id=0x%jx %s\n",
+               event->error_code, event->request_code, event->minor_code, event->resourceid, string);
        return 0;
 }
 
@@ -855,6 +861,8 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
                fprintf(fp,"        by %d:%d %s(%s)\n",
                        pw->pw_uid, pw->pw_gid, pw->pw_name, pw->pw_gecos);
        }
+       fprintf(fp,"\nCPUS: %d\n",   BC_Resources::get_machine_cpus());
+       fprintf(fp,"\nCPUINFO:\n");  bc_copy_textfile(32, fp,"/proc/cpuinfo");
        fprintf(fp,"\nTHREADS:\n");  Thread::dump_threads(fp);
        fprintf(fp,"\nTRACES:\n");   BC_Signals::dump_traces(fp);
        fprintf(fp,"\nLOCKS:\n");    BC_Signals::dump_locks(fp);
@@ -863,9 +871,9 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
                fprintf(fp,"\nMAIN HOOK:\n");
                BC_Signals::trap_hook(fp, BC_Signals::trap_data);
        }
-       fprintf(fp,"\nVERSION:\n");  bc_copy_textfile(fp,"/proc/version");
-       fprintf(fp,"\nMEMINFO:\n");  bc_copy_textfile(fp,"/proc/meminfo");
-       fprintf(fp,"\nMAPS:\n");     bc_copy_textfile(fp,"/proc/%d/maps",pid);
+       fprintf(fp,"\nVERSION:\n");  bc_copy_textfile(INT_MAX, fp,"/proc/version");
+       fprintf(fp,"\nMEMINFO:\n");  bc_copy_textfile(INT_MAX, fp,"/proc/meminfo");
+       fprintf(fp,"\nMAPS:\n");     bc_copy_textfile(INT_MAX, fp,"/proc/%d/maps",pid);
        fprintf(fp,"\n\n");
        if( fp != stdout ) fclose(fp);
        char cmd[1024], *cp = cmd;