From 66650633280cdc45a5762fa082c010050b3a4215 Mon Sep 17 00:00:00 2001 From: Juan Zhao Date: Thu, 2 Feb 2012 16:02:06 -0800 Subject: [PATCH] smoke: fix the segment fault error Add widget_set_size in the initiate time to allow smoke get the correct surface later. Or it will report segment fault error because of the null surface. Also add resize_handler to not allow resizing just like flower. Signed-off-by: Juan Zhao --- clients/smoke.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/clients/smoke.c b/clients/smoke.c index c1665ced..69a1ac71 100644 --- a/clients/smoke.c +++ b/clients/smoke.c @@ -249,6 +249,16 @@ smoke_motion_handler(struct widget *widget, struct input *input, return POINTER_HAND1; } +static void +resize_handler(struct widget *widget, + int32_t width, int32_t height, void *data) +{ + struct smoke *smoke = data; + + /* Dont resize me */ + widget_set_size(smoke->widget, smoke->width, smoke->height); +} + int main(int argc, char *argv[]) { struct timespec ts; @@ -270,6 +280,7 @@ int main(int argc, char *argv[]) smoke.window = window_create(d); smoke.widget = window_add_widget(smoke.window, &smoke); window_set_title(smoke.window, "smoke"); + widget_set_size(smoke.widget, smoke.width, smoke.height); window_set_buffer_type(smoke.window, WINDOW_BUFFER_TYPE_SHM); clock_gettime(CLOCK_MONOTONIC, &ts); @@ -291,6 +302,7 @@ int main(int argc, char *argv[]) window_flush(smoke.window); widget_set_motion_handler(smoke.widget, smoke_motion_handler); + widget_set_resize_handler(smoke.widget, resize_handler); window_set_user_data(smoke.window, &smoke); frame_callback(&smoke, NULL, 0);