#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
* 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) {
+ /* The 'old' buffer might not exist if maximized is received
+ * from the start. */
+ if (window->buffers[0].buffer && !window->buffers[0].busy) {
wl_buffer_destroy(window->buffers[0].buffer);
window->buffers[0].buffer = NULL;
window->wait_for_configure = false;
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_first_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);
if (error || !pipeline) {
fprintf(stderr, "gstreamer pipeline construction failed!\n");
- free(argv);
+ free(gargv);
return EXIT_FAILURE;
}
window = create_window(display, WINDOW_WIDTH_SIZE, WINDOW_HEIGHT_SIZE, app_id);
if (!window) {
- free(argv);
+ free(gargv);
return EXIT_FAILURE;
}
destroy_window(window);
destroy_display(display);
- free(argv);
+ free(gargv);
gst_element_set_state(pipeline, GST_STATE_NULL);
gst_object_unref(pipeline);