Package: gqcam Version: 0.9.1-5 Severity: important Tags: patch
A patch is attached which prevents gqcam to overwrite ~/.gqcamrc if it detects that the structure is not the correct one in the memory. This is only a workaround and not the right solution of this bug.
diff -upr gqcam-0.9.1.orig/color.c gqcam-0.9.1/color.c --- gqcam-0.9.1.orig/color.c 2008-10-19 12:35:45.000000000 +0200 +++ gqcam-0.9.1/color.c 2008-10-19 15:51:42.000000000 +0200 @@ -38,6 +38,7 @@ void create_controls_color(struct Camera GSList *camera->controls.radiogroup; */ + GQCAM_CHECK_MAGIC(camera); /* Create new outerbox */ camera->controltop = gtk_hbox_new (FALSE, 0); diff -upr gqcam-0.9.1.orig/filters.c gqcam-0.9.1/filters.c --- gqcam-0.9.1.orig/filters.c 2008-10-19 12:35:45.000000000 +0200 +++ gqcam-0.9.1/filters.c 2008-10-19 15:43:30.000000000 +0200 @@ -44,6 +44,7 @@ void swap_rgb24(struct Camera *camera) int i = camera->vid_win.width*camera->vid_win.height; int bytes_per_rgb = 3; + GQCAM_CHECK_MAGIC(camera); // printf("Swapping...\n"); if(!camera->greyscale){ while (--i) { @@ -61,6 +62,7 @@ void auto_bright(struct Camera *camera) long total = 0; int size = camera->vid_win.height * camera->vid_win.width; + GQCAM_CHECK_MAGIC(camera); if (camera->greyscale) num_components = 1; else diff -upr gqcam-0.9.1.orig/frontend.c gqcam-0.9.1/frontend.c --- gqcam-0.9.1.orig/frontend.c 2008-10-19 12:35:45.000000000 +0200 +++ gqcam-0.9.1/frontend.c 2008-10-19 16:26:49.000000000 +0200 @@ -87,6 +87,7 @@ void errordialog(char *message) void setbrightness(GtkAdjustment *adj, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_pic.brightness = (adj->value)*256; camera->update_camera = 1; @@ -95,6 +96,7 @@ void setbrightness(GtkAdjustment *adj, s void setwhite(GtkAdjustment *adj, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_pic.whiteness = (adj->value)*256; camera->update_camera = 1; @@ -103,6 +105,7 @@ void setwhite(GtkAdjustment *adj, struct void setcontrast(GtkAdjustment *adj, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_pic.contrast = (adj->value)*256; camera->update_camera = 1; @@ -111,6 +114,7 @@ void setcontrast(GtkAdjustment *adj, str void sethue(GtkAdjustment *adj, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_pic.hue = (adj->value)*256; camera->update_camera = 1; @@ -119,6 +123,7 @@ void sethue(GtkAdjustment *adj, struct C void setcolor(GtkAdjustment *adj, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_pic.colour = (adj->value)*256; camera->update_camera = 1; @@ -127,6 +132,7 @@ void setcolor(GtkAdjustment *adj, struct void setsizefull(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_win.width = camera->vid_caps.maxwidth; camera->vid_win.height = camera->vid_caps.maxheight; @@ -136,6 +142,7 @@ void setsizefull(GtkWidget *widget, stru void setsizehalf(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_win.width = (camera->vid_caps.maxwidth)/2; camera->vid_win.height = (camera->vid_caps.maxheight)/2; @@ -146,6 +153,7 @@ void setsizehalf(GtkWidget *widget, stru void setsizequarter(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_win.width = (camera->vid_caps.maxwidth)/4; camera->vid_win.height = (camera->vid_caps.maxheight)/4; @@ -156,6 +164,7 @@ void setsizequarter(GtkWidget *widget, s void setdepth4(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_pic.depth = 4; camera->update_camera = 1; @@ -164,6 +173,7 @@ void setdepth4(GtkWidget *widget, struct void setdepth6(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock(&camera->pref_mutex); camera->vid_pic.depth = 6; camera->update_camera = 1; @@ -172,6 +182,7 @@ void setdepth6(GtkWidget *widget, struct void stop_capture(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock( &camera->pref_mutex ); if( camera->dev ) { camera->capture = 0; @@ -182,6 +193,7 @@ void stop_capture(GtkWidget *widget, str void start_capture(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); pthread_mutex_lock( &camera->pref_mutex ); open_cam(camera); get_cam_info(camera); @@ -223,6 +235,7 @@ void camera_info(GtkWidget *widget, stru GtkWidget *vscrollbar; char buff[80]; + GQCAM_CHECK_MAGIC(camera); dialog = gtk_dialog_new(); gtk_window_set_title(GTK_WINDOW (dialog),"Gqcam - Camera Info"); textbox = gtk_text_new(NULL, NULL); @@ -348,6 +361,7 @@ void about_dialog(GtkWidget *widget, str GtkWidget *dialog, *label, *button; char buff[80]; + GQCAM_CHECK_MAGIC(camera); dialog = gtk_dialog_new(); sprintf(buff, "gqcam %s\n\n(C)2000 Cory Lueninghoener\n(C)2005 Giansalvo Gusinu", VERSION); @@ -370,6 +384,7 @@ void about_dialog(GtkWidget *widget, str /* void pref_dialog(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); errordialog("Preferences dialog is not implemented yet...", camera); } @@ -377,6 +392,8 @@ void pref_dialog(GtkWidget *widget, stru void open_dialog_ok(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + stop_capture( NULL, camera ); usleep(1); clearimg(camera); @@ -390,6 +407,8 @@ void open_dialog(GtkWidget *widget, stru { GtkWidget *opendialog; + GQCAM_CHECK_MAGIC(camera); + opendialog = gtk_file_selection_new ("Open Device"); gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (opendialog)->ok_button), @@ -404,6 +423,7 @@ void open_dialog(GtkWidget *widget, stru /* void close_dialog(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); fprintf( stderr, "close_dialog calling stop_capture\n" ); stop_capture( NULL, camera ); usleep(1); @@ -412,8 +432,8 @@ void open_dialog(GtkWidget *widget, stru void update_controls(struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); gtk_widget_destroy(camera->controltop); - if (camera->greyscale) create_controls_greyscale(camera); else @@ -426,12 +446,16 @@ void update_controls(struct Camera *came void close_controls(GtkWidget *widget, GdkEvent *event, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + dock_controls(widget, camera); } void dock_controls(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + if (camera->docked){ // printf("Floating(%d)\n", camera->docked); camera->docked = 0; @@ -443,6 +467,7 @@ void dock_controls(GtkWidget *widget, st camera->controlwindow = gtk_window_new(GTK_WINDOW_DIALOG); gtk_container_add (GTK_CONTAINER(camera->controlwindow), camera->controltop); gtk_window_set_title(GTK_WINDOW (camera->controlwindow), "Gqcam - Control Panel"); + gtk_signal_connect (GTK_OBJECT (camera->controlwindow), "delete_event", GTK_SIGNAL_FUNC (close_controls), camera); gtk_widget_show(camera->controlwindow); @@ -465,6 +490,7 @@ void clearimg(struct Camera *camera) { GdkRectangle update_rec; + GQCAM_CHECK_MAGIC(camera); configure_event(GTK_WIDGET (camera->drawing_area),NULL, camera); update_rec.x = 0; @@ -477,6 +503,7 @@ void clearimg(struct Camera *camera) static gint configure_event (GtkWidget *widget, GdkEventConfigure *event, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); if (camera->pixmap) gdk_pixmap_unref(camera->pixmap); @@ -495,6 +522,7 @@ static gint configure_event (GtkWidget * static gint expose_event (GtkWidget *widget, GdkEventExpose *event, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); // display(camera); gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], @@ -507,6 +535,7 @@ static gint expose_event (GtkWidget *wid void freeze(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); /* correct our state */ if( !camera->frozen && ( GTK_TOGGLE_BUTTON (widget)->active ) ) { GTK_TOGGLE_BUTTON (widget)->active = FALSE; @@ -580,6 +609,7 @@ int create_frontend(struct Camera *camer int ib=130, ic=30, iw=150, i, count=32; */ + GQCAM_CHECK_MAGIC(camera); strcat(title, camera->vid_caps.name); /* for (i = 0; i < count; i++) { @@ -599,6 +629,7 @@ int create_frontend(struct Camera *camer window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), title); gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE); + gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (delete_event), camera); @@ -645,6 +676,7 @@ int create_frontend(struct Camera *camer quititem = gtk_menu_item_new_with_label("Quit"); gtk_menu_append(GTK_MENU(filemenu), quititem); + gtk_signal_connect(GTK_OBJECT (quititem), "activate", GTK_SIGNAL_FUNC (delete_event), camera); diff -upr gqcam-0.9.1.orig/gqcam.c gqcam-0.9.1/gqcam.c --- gqcam-0.9.1.orig/gqcam.c 2008-10-19 12:35:45.000000000 +0200 +++ gqcam-0.9.1/gqcam.c 2008-10-19 16:24:47.000000000 +0200 @@ -48,6 +48,8 @@ char version[] = VERSION; void init_cam(struct Camera *camera) { memset(camera, 0, sizeof(*camera)); + GQCAM_INIT_MAGIC(camera); + GQCAM_CHECK_MAGIC(camera); camera->greyscale = 0; camera->pic = NULL; @@ -85,6 +87,8 @@ int y_frames = 0; void set_cam_info(struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + if (ioctl (camera->dev, VIDIOCSPICT, &camera->vid_pic) == -1) { perror ("ioctl (VIDIOCSPICT)"); } @@ -98,6 +102,8 @@ void get_cam_info(struct Camera *camera) int i; struct video_clip vid_clips[32]; + GQCAM_CHECK_MAGIC(camera); + if (ioctl(camera->dev, VIDIOCGCAP, &camera->vid_caps) == -1) { perror("ioctl(VIDIOCGCAP)"); } @@ -134,6 +140,7 @@ void get_cam_info(struct Camera *camera) /* void print_cam_info(struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); printf("Name: %s\n", camera->vid_caps.name); printf("Type: %i\n", camera->vid_caps.type); if (camera->vid_caps.type & VID_TYPE_CAPTURE) { @@ -193,6 +200,8 @@ void print_cam_info(struct Camera *camer void open_cam(struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + if((camera->dev<=0)){ camera->dev = open(camera->devname, O_RDWR); // printf("Opening: %d\n", camera->dev); @@ -206,6 +215,8 @@ void open_cam(struct Camera *camera) void close_cam(struct Camera *camera, int quiting) { + GQCAM_CHECK_MAGIC(camera); + pthread_mutex_lock( &camera->iscam_mutex ); if(camera->dev > 0){ close(camera->dev); @@ -222,6 +233,8 @@ void display(struct Camera *camera) char tbuff[1024]; static int frameno = 0; + GQCAM_CHECK_MAGIC(camera); + while( !plsquit ) { if( !sem_wait( &s_draw ) ) { unsigned char *tmp; @@ -277,6 +290,7 @@ void grab_image(struct Camera *camera) struct ov511_frame temp; size_t read_size; + GQCAM_CHECK_MAGIC(camera); get_cam_info(camera); update_rec.x = 0; @@ -356,6 +370,7 @@ void grab_image(struct Camera *camera) if (camera->img_size <= 0) fprintf(stderr, "Error reading image...\n"); } + pthread_mutex_unlock( &camera->freeze_mutex ); pthread_mutex_unlock( &camera->iscam_mutex ); if( camera->dump ) { @@ -395,6 +410,8 @@ void delete_event(GtkWidget *widget, str char * savefile; char * path = "/.gqcamrc"; + GQCAM_CHECK_MAGIC(camera); + if((home = getenv("HOME")) != NULL && (savefile = malloc(strlen(home) + strlen(path) + 1)) != NULL) { @@ -417,6 +434,8 @@ void delete_event(GtkWidget *widget, str int next_frame(struct Camera *camera) { int val; + GQCAM_CHECK_MAGIC(camera); + sem_getvalue( &s_grab2, &val ); if( !val ) sem_post( &s_grab2 ); @@ -427,6 +446,8 @@ gboolean increment_second_counter(gpoint struct Camera *camera = (struct Camera*)data; static int x_seconds = 0; + GQCAM_CHECK_MAGIC(camera); + x_seconds++; // the following just prevents integer wrap if( ( x_seconds % 512 ) == 0 ) { @@ -452,6 +473,7 @@ int main(int argc, char *argv[]) FILE *preffile; init_cam(&camera); + GQCAM_CHECK_MAGIC(&camera); /* g_thread_init(NULL); gtk_init (&argc, &argv); @@ -628,6 +650,8 @@ void print_usage() { int dump_pict( struct Camera *camera, char *filename, int brightness, int contrast, int whiteness ) { + GQCAM_CHECK_MAGIC(camera); + if( filename != NULL ){ strcpy(camera->savefile, filename); strcpy(camera->savefileclean, filename); diff -upr gqcam-0.9.1.orig/gqcam.h gqcam-0.9.1/gqcam.h --- gqcam-0.9.1.orig/gqcam.h 2008-10-19 12:35:45.000000000 +0200 +++ gqcam-0.9.1/gqcam.h 2008-10-19 16:19:28.000000000 +0200 @@ -19,6 +19,9 @@ #ifndef _GQCAM_H #define _GQCAM_H +#define GQCAM_CONSISTENCY_CHECK 1 + + enum Input_Types { INPUT_NOT_FORCED = 0, INPUT_JPEG = 1, @@ -158,8 +161,31 @@ struct Controls GtkWidget *scalecolor; }; +#ifdef GQCAM_CONSISTENCY_CHECK + +/* just a ranom number to check the validity of struct Camera */ +#define GQCAM_CAMERA_MAGIC1 0x3885FD09UL +#define GQCAM_CAMERA_MAGIC2 0x26600C29UL +#define GQCAM_CHECK_MAGIC(camera) \ + if ((camera)->magic_start != GQCAM_CAMERA_MAGIC1 || \ + (camera)->magic_end != GQCAM_CAMERA_MAGIC2) { \ + fprintf(stderr, "%s:%u: FATAL: struct Camera is not valid\n", __FILE__, __LINE__); \ + exit(-1); \ + } +#define GQCAM_INIT_MAGIC(camera) \ + (camera)->magic_start = GQCAM_CAMERA_MAGIC1; \ + (camera)->magic_end = GQCAM_CAMERA_MAGIC2; + +#else +#define GQCAM_CHECK_MAGIC(camera) +#define GQCAM_INIT_MAGIC(camera) +#endif + struct Camera { +#ifdef GQCAM_CONSISTENCY_CHECK + unsigned int magic_start; +#endif int dev; int greyscale; int draw; @@ -210,6 +236,9 @@ struct Camera * FIXME probably this could be local to grab_image() */ unsigned char rawbuffer[1280*1024*3]; +#ifdef GQCAM_CONSISTENCY_CHECK + unsigned int magic_end; +#endif }; diff -upr gqcam-0.9.1.orig/greyscale.c gqcam-0.9.1/greyscale.c --- gqcam-0.9.1.orig/greyscale.c 2005-04-04 03:25:09.000000000 +0200 +++ gqcam-0.9.1/greyscale.c 2008-10-19 15:52:35.000000000 +0200 @@ -54,6 +54,7 @@ void create_controls_greyscale(struct Ca GtkWidget *scalecontrast; */ + GQCAM_CHECK_MAGIC(camera); /* Create new outerbox */ camera->controltop = gtk_hbox_new (FALSE, 0); diff -upr gqcam-0.9.1.orig/preferences.c gqcam-0.9.1/preferences.c --- gqcam-0.9.1.orig/preferences.c 2005-04-04 03:25:09.000000000 +0200 +++ gqcam-0.9.1/preferences.c 2008-10-19 16:11:48.000000000 +0200 @@ -65,6 +65,8 @@ void pref_dialog(GtkWidget *widget, stru GtkWidget *label; */ + GQCAM_CHECK_MAGIC(camera); + camera->pref_dialog.prefdialog = gtk_dialog_new(); camera->pref_dialog.prefnotebook = gtk_notebook_new(); @@ -180,6 +182,8 @@ void read_pref_file(FILE *input, struct char buff[1024], command[1024]; int val=0; + GQCAM_CHECK_MAGIC(camera); + while(fgets(buff, sizeof(buff), input) != NULL){ if((buff[0] != '#') && (buff[0] != '\n')) { @@ -200,6 +204,8 @@ void read_pref_file(FILE *input, struct void save_pref_file(FILE *output, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + fprintf(output, "autobrightness %d\n", camera->autobright); fprintf(output, "swaprgb %d\n", camera->swapcolors); fprintf(output, "inputtype %d\n", camera->inputtype); @@ -207,6 +213,8 @@ void save_pref_file(FILE *output, struct void ok_prefs(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + apply_prefs(widget, camera); closedialog(widget, camera->pref_dialog.prefdialog); } @@ -214,6 +222,8 @@ void ok_prefs(GtkWidget *widget, struct void apply_prefs(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(camera->pref_dialog.rgbswap))) camera->swapcolors = 1; else diff -upr gqcam-0.9.1.orig/save.c gqcam-0.9.1/save.c --- gqcam-0.9.1.orig/save.c 2008-10-19 12:35:45.000000000 +0200 +++ gqcam-0.9.1/save.c 2008-10-19 15:59:12.000000000 +0200 @@ -51,6 +51,8 @@ static struct symbolic_list fname_postfi void select_ok(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + gtk_entry_set_text(GTK_ENTRY(camera->save_struct.textbox), gtk_file_selection_get_filename(GTK_FILE_SELECTION (camera->save_struct.fileselect))); gtk_widget_destroy(camera->save_struct.fileselect); return; @@ -64,6 +66,7 @@ void select_cancel(GtkWidget *widget, Gd void file_select(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); // camera->saving = 1; camera->save_struct.fileselect = gtk_file_selection_new("Save Image"); @@ -80,6 +83,7 @@ void file_select(GtkWidget *widget, stru void save_ok(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); if(strlen(gtk_entry_get_text(GTK_ENTRY(camera->save_struct.textbox))) > 255){ errordialog("File name too long...\n"); @@ -161,6 +165,8 @@ void png_save(struct Camera *camera) png_uint_32 k; png_bytep row_pointers[camera->vid_win.height]; + GQCAM_CHECK_MAGIC(camera); + /* open the file */ if (camera->savefile != NULL && strcmp(camera->savefile, "") != 0) fp = fopen(camera->savefile, "w"); @@ -361,6 +367,8 @@ void ppm_save(struct Camera *camera) unsigned char buff[3]; int i; + GQCAM_CHECK_MAGIC(camera); + if (camera->savefile != NULL && strcmp(camera->savefile, "") != 0) outfile = fopen(camera->savefile, "w"); @@ -413,6 +421,8 @@ void jpeg_save(struct Camera *camera) JSAMPROW row_pointer[1]; // pointer to JSAMPLE row(s) int row_stride; // physical row width in image buffer + GQCAM_CHECK_MAGIC(camera); + if (camera->savefile != NULL && strcmp(camera->savefile, "") != 0) outfile = fopen(camera->savefile, "w"); @@ -461,6 +471,8 @@ void raw_save(struct Camera *camera) { FILE *outfile = stdout; + GQCAM_CHECK_MAGIC(camera); + if (camera->savefile != NULL && strcmp(camera->savefile, "") != 0) outfile = fopen(camera->savefile, "w"); @@ -481,6 +493,8 @@ void raw_save(struct Camera *camera) void save_cancel(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + gtk_widget_destroy(widget->parent->parent->parent); camera->saving = 0; if( !camera->frozen ) @@ -496,6 +510,8 @@ void destroy( GtkWidget *widget, void switch_page_png(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + gtk_widget_hide(camera->currentsavepage); gtk_widget_show(camera->page_png.frame_png); camera->currentsavepage = camera->page_png.frame_png; @@ -504,6 +520,8 @@ void switch_page_png(GtkWidget *widget, void switch_page_jpeg(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + gtk_widget_hide(camera->currentsavepage); gtk_widget_show(camera->page_jpeg.frame_jpeg); camera->currentsavepage = camera->page_jpeg.frame_jpeg; @@ -512,6 +530,8 @@ void switch_page_jpeg(GtkWidget *widget, void switch_page_raw(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + gtk_widget_hide(camera->currentsavepage); camera->savetype = SAVE_RAW; } @@ -782,6 +802,8 @@ void savefile_append_time(struct Camera char prefix[255+11], curtime[10]; int length; + GQCAM_CHECK_MAGIC(camera); + dotlocation = strrchr(camera->savefileclean, '.'); if(dotlocation == NULL) length = strlen(camera->savefileclean); diff -upr gqcam-0.9.1.orig/timer.c gqcam-0.9.1/timer.c --- gqcam-0.9.1.orig/timer.c 2008-10-19 12:35:45.000000000 +0200 +++ gqcam-0.9.1/timer.c 2008-10-19 16:07:08.000000000 +0200 @@ -39,21 +39,29 @@ void set_timer_seconds(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + camera->timer_struct.unit = SECONDS; } void set_timer_minutes(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + camera->timer_struct.unit = MINUTES; } void timer_snap_now(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + next_frame(camera); } void timer_stop_timer(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + camera->on_timer = 0; gtk_timeout_remove(camera->timeoutid); if(!camera->timeout) @@ -75,6 +83,8 @@ void timer_ok(GtkWidget *widget, struct int timeout; char snaplabeltext[30]; + GQCAM_CHECK_MAGIC(camera); + if(strlen(gtk_entry_get_text(GTK_ENTRY(camera->timer_struct.commandentry))) > 255){ printf("Command too long...\n"); return; @@ -140,6 +150,8 @@ void timer_ok(GtkWidget *widget, struct void timer_cancel(GtkWidget *widget, struct Camera *camera) { + GQCAM_CHECK_MAGIC(camera); + //camera->on_timer = 0; gtk_widget_destroy(camera->timer_struct.timerdialog); } @@ -163,6 +175,8 @@ void set_timer(GtkWidget *widget, struct GtkWidget *okbutton; GtkWidget *cancelbutton; */ + GQCAM_CHECK_MAGIC(camera); + // camera->on_timer = 1; camera->timer_struct.timerdialog = gtk_dialog_new();