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();