Fix crash due to 'window->buffers[0].buffer' NULL pointer.
[apps/camera-gstreamer.git] / app / main.cpp
index 8634bbc..62ea3a0 100644 (file)
@@ -23,8 +23,6 @@
 #include <gst/video/videooverlay.h>
 #include <gst/wayland/wayland.h>
 
-#define DEFAULT_VIDEO_DEVICE   "/dev/video0"
-
 // these only applies if the window is a dialog/pop-up one
 // by default the compositor make the window maximized
 #define WINDOW_WIDTH_SIZE      640
@@ -160,7 +158,7 @@ get_next_buffer(struct window *window)
         * the 'old' one and force creation of the buffer with the newer
         * dimensions */
        if (window->wait_for_configure && window->maximized) {
-               if (!window->buffers[0].busy) {
+               if (!window->buffers[0].busy && window->buffers[0].buffer) {
                        wl_buffer_destroy(window->buffers[0].buffer);
                        window->buffers[0].buffer = NULL;
                        window->wait_for_configure = false;
@@ -669,9 +667,11 @@ int main(int argc, char *argv[])
 
        memset(pipeline_str, 0, sizeof(pipeline_str));
        snprintf(pipeline_str, sizeof(pipeline_str), "v4l2src device=%s ! video/x-raw,width=%d,height=%d ! waylandsink", 
-               DEFAULT_VIDEO_DEVICE, WINDOW_WIDTH_SIZE, WINDOW_HEIGHT_SIZE);
+               get_camera_device(), WINDOW_WIDTH_SIZE, WINDOW_HEIGHT_SIZE);
        gst_init(&gargc, &gargv);
 
+       setbuf(stdout, NULL);
+
        fprintf(stdout, "Using pipeline: %s\n", pipeline_str);
 
        GstElement *pipeline = gst_parse_launch(pipeline_str, &error);