~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix a memory leak.
[sgt/puzzles]
/
gtk.c
diff --git
a/gtk.c
b/gtk.c
index
3e7fe4d
..
3501f83
100644
(file)
--- a/
gtk.c
+++ b/
gtk.c
@@
-313,9
+313,6
@@
static gint motion_event(GtkWidget *widget, GdkEventMotion *event,
if (!fe->pixmap)
return TRUE;
if (!fe->pixmap)
return TRUE;
- if (event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE)
- return TRUE;
-
if (event->state & (GDK_BUTTON2_MASK | GDK_SHIFT_MASK))
button = MIDDLE_DRAG;
else if (event->state & GDK_BUTTON1_MASK)
if (event->state & (GDK_BUTTON2_MASK | GDK_SHIFT_MASK))
button = MIDDLE_DRAG;
else if (event->state & GDK_BUTTON1_MASK)
@@
-765,7
+762,7
@@
static void add_menu_separator(GtkContainer *cont)
gtk_widget_show(menuitem);
}
gtk_widget_show(menuitem);
}
-static frontend *new_window(
void
)
+static frontend *new_window(
char *game_id, char **error
)
{
frontend *fe;
GtkBox *vbox;
{
frontend *fe;
GtkBox *vbox;
@@
-777,6
+774,14
@@
static frontend *new_window(void)
time(&t);
fe->me = midend_new(fe, &t, sizeof(t));
time(&t);
fe->me = midend_new(fe, &t, sizeof(t));
+ if (game_id) {
+ *error = midend_game_id(fe->me, game_id, FALSE);
+ if (*error) {
+ midend_free(fe->me);
+ sfree(fe);
+ return NULL;
+ }
+ }
midend_new_game(fe->me);
fe->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
midend_new_game(fe->me);
fe->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
@@
-947,8
+952,16
@@
static frontend *new_window(void)
int main(int argc, char **argv)
{
int main(int argc, char **argv)
{
+ char *pname = argv[0];
+ char *error;
+
gtk_init(&argc, &argv);
gtk_init(&argc, &argv);
- (void) new_window();
+
+ if (!new_window(argc > 1 ? argv[1] : NULL, &error)) {
+ fprintf(stderr, "%s: %s\n", pname, error);
+ return 1;
+ }
+
gtk_main();
return 0;
gtk_main();
return 0;