summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-10-20 14:30:32 +0300
committerMarius Vlad <marius.vlad@collabora.com>2020-12-01 13:07:57 +0200
commit694ec412b5ae13b84229e5c65f2e3dce2babee34 (patch)
treee25a0f1a94e025ad729b37d5f35ec4494aff8b0d /src
parente6ad86a86fe3ed73cac6478e07eb1220399ace1f (diff)
build: Added AGL specific build directory for widget building
Adds also a cmake as we don't have meson alternative as of yet. Bug-AGL: SPEC-3605 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I43cc98294d7bb5d887370c8ce2db854cbd9055d7
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt137
-rw-r--r--src/wth-receiver-gst-shm.c3
2 files changed, 139 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..fb61c40
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,137 @@
+###########################################################################
+# Copyright 2018 Konsulko Group
+# Copyright 2020 Collabora, Ltd.
+#
+# Author: Scott Murray <scott.murray@konsulko.com>
+# Author: Marius Vlad <marius.vlad@collabora.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###########################################################################
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+#set(CMAKE_CXX_STANDARD 14)
+#set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package(PkgConfig REQUIRED)
+find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
+
+PROJECT_TARGET_ADD(waltham-receiver)
+
+# added just in case need additional windowing functionality
+#add_custom_command(
+# OUTPUT agl-shell-desktop-client-protocol.h
+# COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
+# < ${CMAKE_SOURCE_DIR}/src/protocol/agl-shell-desktop.xml
+# > ${CMAKE_SOURCE_DIR}/src/agl-shell-desktop-client-protocol.h
+# DEPENDS ${CMAKE_SOURCE_DIR}/src/agl-shell-desktop.xml
+#)
+#
+#add_custom_command(
+# OUTPUT ${CMAKE_BINARY_DIR}/src/agl-shell-desktop-client-protocol.h
+# COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
+# < ${CMAKE_SOURCE_DIR}/src/protocol/agl-shell-desktop.xml
+# > ${CMAKE_SOURCE_DIR}/src/agl-shell-desktop-client-protocol.h
+# DEPENDS ${CMAKE_SOURCE_DIR}/src/protocol/agl-shell-desktop.xml
+#)
+#
+#add_custom_command(
+# OUTPUT agl-shell-desktop-protocol.c
+# COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code
+# < ${CMAKE_SOURCE_DIR}/src/protocol/agl-shell-desktop.xml
+# > ${CMAKE_BINARY_DIR}/src/agl-shell-desktop-protocol.c
+# DEPENDS ${CMAKE_SOURCE_DIR}/src/protocol/agl-shell-desktop.xml
+#)
+#
+
+pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0)
+pkg_check_modules(GSTREAMER_PLUGINS_BASE REQUIRED gstreamer-plugins-base-1.0)
+pkg_check_modules(GSTREAMER_VIDEO REQUIRED gstreamer-video-1.0)
+pkg_check_modules(GSTREAMER_PLUGINS_BAD REQUIRED gstreamer-plugins-bad-1.0)
+pkg_check_modules(WALTHAM REQUIRED waltham)
+
+pkg_check_modules(GLES2 REQUIRED glesv2)
+pkg_check_modules(EGL REQUIRED egl)
+pkg_check_modules(WAYLAND_EGL REQUIRED wayland-egl)
+
+pkg_check_modules(WAYLAND_CLIENT REQUIRED wayland-client)
+pkg_check_modules(WAYLAND_PROTOCOLS REQUIRED wayland-protocols>=1.18)
+pkg_get_variable(WAYLAND_PROTOCOLS_BASE wayland-protocols pkgdatadir)
+
+add_custom_command(
+ OUTPUT xdg-shell-client-protocol.h
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
+ < ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+ > ${CMAKE_SOURCE_DIR}/src/xdg-shell-client-protocol.h
+ DEPENDS ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/src/xdg-shell-client-protocol.h
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
+ < ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+ > ${CMAKE_SOURCE_DIR}/src/xdg-shell-client-protocol.h
+ DEPENDS ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+)
+
+add_custom_command(
+ OUTPUT xdg-shell-protocol.c
+ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code
+ < ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+ > ${CMAKE_BINARY_DIR}/src/xdg-shell-protocol.c
+ DEPENDS ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml
+)
+
+add_executable(${TARGET_NAME}
+ bitmap.c
+ os-compatibility.c
+ wth-receiver-comm.c
+ wth-receiver-buffer.c
+ wth-receiver-surface.c
+ wth-receiver-seat.c
+ wth-receiver-gst-shm.c
+ wth-receiver-main.c
+ xdg-shell-protocol.c
+ xdg-shell-client-protocol.h
+ ${RESOURCES}
+)
+
+include_directories(
+ "../include"
+ "${GSTREAMER_INCLUDE_DIRS}"
+ "${WALTHAM_INCLUDE_DIRS}"
+ "${GSTREAMER_PLUGINS_BASE_INCLUDE_DIRS}"
+ "${GSTREAMER_PLUGINS_BAD_INCLUDE_DIRS}"
+ "${GSTREAMER_VIDEO_INCLUDE_DIRS}"
+)
+
+set_target_properties(${TARGET_NAME} PROPERTIES
+ LABELS "EXECUTABLE"
+ PREFIX ""
+ COMPILE_FLAGS "${EXTRAS_CFLAGS} -DFOR_AFB_BINDING"
+ LINK_FLAGS "${BINDINGS_LINK_FLAG}"
+ LINK_LIBRARIES "${EXTRAS_LIBRARIES}"
+ OUTPUT_NAME "${TARGET_NAME}"
+)
+
+target_link_libraries(${TARGET_NAME}
+ ${GSTREAMER_LIBRARIES}
+ ${WALTHAM_LIBRARIES}
+ "${GSTREAMER_PLUGINS_BASE_LIBRARIES}"
+ "${GSTREAMER_PLUGINS_BAD_LIBRARIES}"
+ "${GSTREAMER_VIDEO_LIBRARIES}"
+ ${WAYLAND_CLIENT_LIBRARIES}
+ ${WAYLAND_EGL_LIBRARIES}
+ ${EGL_LIBRARIES}
+ ${GLES2_LIBRARIES}
+ -lgstwayland-1.0
+)
diff --git a/src/wth-receiver-gst-shm.c b/src/wth-receiver-gst-shm.c
index 54950ef..2228d4f 100644
--- a/src/wth-receiver-gst-shm.c
+++ b/src/wth-receiver-gst-shm.c
@@ -836,11 +836,12 @@ wth_receiver_weston_main(struct window *window, const char *app_id, int port)
while (running && ret != -1)
ret = wl_display_dispatch(gstctx.display->display);
+
gst_element_set_state(gstctx.pipeline, GST_STATE_NULL);
+ gst_object_unref(gstctx.pipeline);
destroy_window(window);
destroy_display(gstctx.display);
- gst_object_unref(gstctx.pipeline);
free(gargv);
return 0;