From b43165328658087277b667152fdbc04fe07cba08 Mon Sep 17 00:00:00 2001 From: Jan-Simon Möller Date: Tue, 15 May 2018 14:46:21 +0200 Subject: 3rd part of the layer/profile rework [1/2] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the last larger commit in this series and deals with the graphical part. We introduce the graphical profiles: - meta-agl-profile-graphical -- meta-agl-profile-graphical-html5 -- meta-agl-profile-graphical-qt5 Notable changes: - weston-ini-conf moved to the meta-agl-bsp layer. Most BSPs have bbappends, so we need to have the recipes present (but unused) even in the console images. - new image: agl-image-boot = terminal-only + network + package-manaager. Ready for using package-feeds - new image/sdk: agl-image-minimal-crosssdk - agl-service-mediaplayer has a dependency on weston, thus it cannot be in the 'core'. Moved it to profile-graphical. - The wayland-ivi-extension moved to the agl-demo-platform. - The app-framework layer included and pulled 'web-runtime' as dependency. This broke console-only images. This has been moved to be in meta-agl-demo only for now. - added and massaged the agl-features. - found and added a useful script 'oe-depends-dot' that helps to work with the dot files (produced with bitbake -g) Todo: - we'll need another pass through the packagegroups. The dependencies for the layers/profiles are now sorted-out but we might have to add/shuffle a few packages. For further details, see meta-agl/docs/profiles.md. v2: fix meta-agl/meta-security/conf/layer.conf - the immediate expansion previously used in there caused some recipes not being added to BBFILES. v3: fix packagegroup renaming (packagegroup-agl-devel -> packagegroup-agl-core-devel) v4: fix missing packagegroup inclusion (tnx Jose, Scott, Stephane) v5: fix missing packagegroup inclusion v6: explicitely put profile-graphical-qt5 on-top of profile-graphical v7: re-add 'procps' when agl-devel feature is on Bug-AGL: SPEC-145 Change-Id: I24cdcd1118932758d0c55d333338238f2a770877 Signed-off-by: Jan-Simon Möller --- docs/profiles.md | 134 +++ meta-agl-bsp/conf/include/agl_m3ulcb-nogfx.inc | 3 - meta-agl-bsp/conf/include/agl_qemux86-64.inc | 2 +- .../harfbuzz/harfbuzz_1.4.8.bbappend | 4 + .../recipes-graphics/mesa/mesa_%.bbappend | 6 + .../recipes-graphics/wayland/libva_%.bbappend | 4 + .../wayland/weston-ini-conf.bbappend | 9 + .../wayland/weston-ini-conf/virtual.cfg | 18 + .../recipes-graphics/wayland/weston_%.bbappend | 3 + .../recipes-graphics/wayland/weston_%.bbappend | 8 +- .../harfbuzz/harfbuzz_1.4.8.bbappend | 4 - meta-agl-bsp/recipes-graphics/mesa/mesa_%.bbappend | 6 - .../recipes-graphics/wayland/libva_%.bbappend | 4 - .../recipes-graphics/wayland/weston-ini-conf.bb | 30 + .../wayland/weston-ini-conf.bbappend | 20 +- .../wayland/weston-ini-conf/core.cfg | 4 + .../wayland/weston-ini-conf/hdmi-a-1-270.cfg | 6 + .../wayland/weston-ini-conf/hdmi-a-1-90.cfg | 6 + .../wayland/weston-ini-conf/id-agent.cfg | 2 + .../wayland/weston-ini-conf/ivishell.cfg | 4 + .../wayland/weston-ini-conf/shell.cfg | 3 + .../wayland/weston-ini-conf/virtual.cfg | 18 - .../wayland/weston-ini-conf/virtualoutput.cfg | 7 + .../recipes-graphics/wayland/weston_%.bbappend | 3 - meta-agl-distro/conf/distro/poky-agl.conf | 10 +- meta-agl-distro/scripts/oe-depends-dot | 121 +++ meta-agl-profile-core/conf/include/agl-devel.inc | 6 +- .../agl-service-can-low-level_git.bb | 18 + .../agl-service-mediaplayer_git.bb | 18 - .../recipes-config/agl-users/agl-users_0.1.bb | 27 + .../dev-mapping/dev-mapping.conf.default | 6 + .../recipes-config/dev-mapping/dev-mapping_0.1.bb | 18 + .../bluez-alsa/bluez-alsa_git.bb | 38 + .../bluez-alsa/files/bluez-alsa.service | 11 + .../0001_fix_compile_issue_when_using_in_c++.patch | 23 + .../bluez5/bluez5/bluetooth.conf | 39 + .../recipes-connectivity/bluez5/bluez5_%.bbappend | 13 + .../busybox/busybox_%.bbappend | 2 + .../busybox/files/enable-wget-https.cfg | 3 + .../connman-ncurses/connman-ncurses_git.bb | 26 + .../recipes-connectivity/connman/.appends.core | 0 .../connman/connman_%.bbappend | 3 + .../files/0001-disable-when-booting-over-nfs.patch | 11 + .../recipes-connectivity/libnfc/libnfc_git.bb | 18 + .../0001-remove-I-usr-include-in-pkg-config.patch | 40 + .../recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb | 26 + .../recipes-core/images/agl-image-boot.bb | 9 - .../recipes-core/images/agl-image-boot.inc | 10 - .../recipes-core/images/agl-image-minimal-qa.bb | 12 - .../recipes-core/images/agl-image-minimal.bb | 9 - .../recipes-core/images/agl-image-minimal.inc | 10 - .../packagegroup-agl-core-automotive.bb | 13 - .../packagegroup-agl-core-connectivity.bb | 15 - .../packagegroup-agl-core-graphics.bb | 10 - .../packagegroups/packagegroup-agl-core-kernel.bb | 13 - .../packagegroup-agl-core-multimedia.bb | 13 - .../packagegroup-agl-core-navi-lbs.bb | 13 - .../packagegroup-agl-core-os-commonlibs.bb | 13 - .../packagegroup-agl-core-security.bb | 13 - .../packagegroup-agl-core-speech-services.bb | 13 - .../packagegroups/packagegroup-agl-image-boot.bb | 18 - .../packagegroup-agl-image-minimal.bb | 27 - .../packagegroups/packagegroup-core-boot-agl.bb | 50 - .../recipes-devtools/gdb/.appends.core | 0 .../packagegroups/packagegroup-agl-core-devel.bb | 25 + .../packagegroups/packagegroup-agl-devel.bb | 24 - .../recipes-extended/gperf/.appends.core | 0 .../recipes-ivi/images/agl-image-ivi-crosssdk.bb | 19 - .../recipes-ivi/images/agl-image-ivi-qa.bb | 14 - .../recipes-ivi/images/agl-image-ivi.bb | 17 - .../recipes-ivi/images/agl-image-ivi.inc | 3 - .../packagegroups/packagegroup-agl-image-ivi.bb | 31 - .../packagegroup-agl-ivi-automotive.bb | 14 - .../packagegroup-agl-ivi-connectivity.bb | 19 - .../packagegroups/packagegroup-agl-ivi-graphics.bb | 14 - .../packagegroups/packagegroup-agl-ivi-kernel.bb | 14 - .../packagegroup-agl-ivi-multimedia.bb | 17 - .../packagegroups/packagegroup-agl-ivi-navi-lbs.bb | 14 - .../packagegroup-agl-ivi-os-commonlibs.bb | 14 - .../packagegroups/packagegroup-agl-ivi-security.bb | 14 - .../packagegroup-agl-ivi-speech-services.bb | 14 - .../0002-src-most-add-auto-conf-feature.patch | 472 +++++++++ ...003-core-remove-kernel-log-for-MBO-status.patch | 26 + .../files/0004-most-video-set-device_caps.patch | 25 + ...-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch | 25 + .../files/0006-dim2-fix-startup-sequence.patch | 186 ++++ .../most/files/0007-dim2-use-device-tree.patch | 378 +++++++ ...im2-read-clock-speed-from-the-device-tree.patch | 92 ++ ...use-device-for-coherent-memory-allocation.patch | 47 + meta-agl-profile-core/recipes-kernel/most/most.bb | 14 + .../recipes-kernel/most/most.bbappend | 12 + .../pulseaudio/pulseaudio/10-unload-modules.pa | 4 + .../pulseaudio/pulseaudio_%.bbappend | 13 + .../recipes-platform/images/agl-image-boot.bb | 9 + .../recipes-platform/images/agl-image-boot.inc | 10 + .../images/agl-image-minimal-crosssdk.bb | 20 + .../images/agl-image-minimal-qa.bb | 12 + .../recipes-platform/images/agl-image-minimal.bb | 9 + .../recipes-platform/images/agl-image-minimal.inc | 10 + .../packagegroups/packagegroup-agl-core-boot.bb | 50 + .../packagegroup-agl-core-connectivity.bb | 16 + .../packagegroup-agl-core-multimedia.bb | 27 + .../packagegroup-agl-core-navigation.bb | 16 + .../packagegroup-agl-core-os-commonlibs.bb | 14 + .../packagegroup-agl-core-security.bb | 14 + .../packagegroup-agl-core-services.bb | 30 + .../packagegroups/packagegroup-agl-image-boot.bb | 18 + .../packagegroup-agl-image-minimal.bb | 27 + meta-agl-profile-demo/conf/layer.conf | 10 - .../packagegroups/packagegroup-agl-appfw-agl.bb | 16 - .../packagegroup-agl-appfw-automotive.bb | 16 - .../packagegroup-agl-appfw-connectivity.bb | 28 - .../packagegroup-agl-appfw-graphics.bb | 17 - .../packagegroup-agl-appfw-multimedia.bb | 15 - .../packagegroups/packagegroup-agl-appfw-native.bb | 17 - .../packagegroup-agl-appfw-navi-lbs.bb | 17 - .../packagegroup-agl-appfw-security.bb | 16 - .../packagegroup-agl-appfw-speech-services.bb | 16 - .../packagegroups/packagegroup-agl-appfw-web.bb | 16 - .../packagegroups/packagegroup-agl-appfw.bb | 25 - .../bluez-alsa/bluez-alsa_git.bb | 38 - .../bluez-alsa/files/bluez-alsa.service | 11 - .../0001_fix_compile_issue_when_using_in_c++.patch | 23 - .../bluez5/bluez5/bluetooth.conf | 39 - .../recipes-connectivity/bluez5/bluez5_%.bbappend | 13 - .../busybox/busybox_%.bbappend | 2 - .../busybox/files/enable-wget-https.cfg | 3 - .../connman-ncurses/connman-ncurses_git.bb | 26 - .../recipes-connectivity/connman/.appends.core | 0 .../connman/connman_%.bbappend | 3 - .../files/0001-disable-when-booting-over-nfs.patch | 11 - .../recipes-connectivity/libnfc/libnfc_git.bb | 18 - .../0001-remove-I-usr-include-in-pkg-config.patch | 40 - .../recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb | 26 - .../rygel/.appends.meta-multimedia | 0 ...-missing-link-to-unistring-for-lms-plugin.patch | 28 - .../recipes-connectivity/rygel/files/rygel.service | 13 - .../recipes-connectivity/rygel/rygel_%.bbappend | 25 - .../packagegroup-ivi-common-core-multimedia.bb | 13 - .../0001-Fix-build-with-systemd-209.patch | 30 - ...on-t-execute-processes-as-a-specific-user.patch | 81 -- ...t-type-should-be-in-lowercase-so-use-Type.patch | 98 -- .../0004-Modify-systemd-config-directory.patch | 24 - .../dlt-daemon/dlt-daemon_2.11.1.bb | 54 - .../dlt-daemon/dlt-daemon_2.15.0.bb | 52 - .../recipes-kernel/mocca-usb/mocca-usb.bb | 22 - .../0002-src-most-add-auto-conf-feature.patch | 472 --------- ...003-core-remove-kernel-log-for-MBO-status.patch | 26 - .../files/0004-most-video-set-device_caps.patch | 25 - ...-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch | 25 - .../files/0006-dim2-fix-startup-sequence.patch | 186 ---- .../most/files/0007-dim2-use-device-tree.patch | 378 ------- ...im2-read-clock-speed-from-the-device-tree.patch | 92 -- ...use-device-for-coherent-memory-allocation.patch | 47 - meta-agl-profile-demo/recipes-kernel/most/most.bb | 14 - .../recipes-kernel/most/most.bbappend | 12 - .../0001-Fix-duplicated-command-line-arg-t.patch | 25 - .../audiomanager/audiomanager/audiomanager.service | 17 - .../audiomanager/audiomanager_7.4.bb | 56 -- meta-agl-profile-demo/recipes-qt/.gitkeep | 0 .../packagegroup-agl-appfw-native-qt5.bb | 32 - .../packagegroup-agl-demo-qt-examples.bb | 26 - .../packagegroup-qt5-toolchain-target.bbappend | 23 - .../qml-execscript-plugin_1.0.bb | 25 - .../recipes-qt/qt5/qtbase-native_git.bbappend | 3 - ...-to-make-introspect-for-every-findMetaObj.patch | 30 - .../recipes-qt/qt5/qtbase_%.bbappend | 16 - ...age-support-with-the-data-URL-scheme-for-.patch | 80 -- .../recipes-qt/qt5/qtmultimedia_%.bbappend | 7 - .../recipes-qt/qt5/qtsystems_%.bbappend | 3 - ...nitial-IVI-shell-support-with-shell-integ.patch | 693 ------------- ...update-3rd-party-ivi-application-protocol.patch | 56 -- .../qt5/qtwayland/0002-Fix-multiple-QWindow.patch | 62 -- ...dow-add-support-for-IVI-Surface-ID-proper.patch | 34 - ...est-file-according-to-smack-3-domain-mode.patch | 33 - ...Add-xdg-shell-protocol-file-version-1.4.0.patch | 468 --------- ...dd-minimize-feature-to-QWindow-using-wayl.patch | 1029 -------------------- ...pgrade-to-support-current-version-weston-.patch | 772 --------------- ...-IVI-Shell-protocol-file-version-patch-v6.patch | 128 --- .../0021-Implement-initial-IVI-Shell-support.patch | 539 ---------- .../qt5/qtwayland/0099_qtwayland_no_evdev.patch | 14 - ...018-packaging-enable-xdg-shell-at-runtime.patch | 31 - ..._egl_qt_wayland_client_buffer_integration.patch | 12 - .../recipes-qt/qt5/qtwayland_%.bbappend | 36 - .../recipes-qt/qt5/qtwebkit_%.bbappend | 1 - meta-agl-profile-graphical-html5/conf/layer.conf | 10 + .../openivi-html5/openivi-html5.service | 16 + .../openivi-html5/openivi-html5/openivi-html5.sh | 50 + .../openivi-html5/openivi-html5_git.bb | 43 + .../images/agl-demo-platform-html5-crosssdk.bb | 56 ++ .../images/agl-demo-platform-html5.bb | 10 + .../images/agl-demo-platform-html5.inc | 2 + .../packagegroup-agl-demo-platform-html5.bb | 26 + meta-agl-profile-graphical-qt5/conf/layer.conf | 10 + .../packagegroups/packagegroup-agl-appfw-native.bb | 17 + .../packagegroups/packagegroup-agl-appfw-qt5.bb | 16 + .../images/agl-image-graphical-qt5-crosssdk.bb | 56 ++ .../images/agl-image-graphical-qt5.bb | 10 + .../images/agl-image-graphical-qt5.inc | 7 + .../packagegroup-agl-appfw-native-qt5.bb | 29 + .../packagegroup-agl-demo-qt-examples.bb | 26 + .../packagegroup-agl-profile-graphical-qt5.bb | 23 + .../packagegroup-qt5-toolchain-target.bbappend | 23 + .../qml-execscript-plugin_1.0.bb | 25 + .../recipes-qt/qt5/qtbase-native_git.bbappend | 3 + ...-to-make-introspect-for-every-findMetaObj.patch | 30 + .../recipes-qt/qt5/qtbase_%.bbappend | 16 + ...age-support-with-the-data-URL-scheme-for-.patch | 80 ++ .../recipes-qt/qt5/qtmultimedia_%.bbappend | 7 + .../recipes-qt/qt5/qtsystems_%.bbappend | 3 + ...nitial-IVI-shell-support-with-shell-integ.patch | 693 +++++++++++++ ...update-3rd-party-ivi-application-protocol.patch | 56 ++ .../qt5/qtwayland/0002-Fix-multiple-QWindow.patch | 62 ++ ...dow-add-support-for-IVI-Surface-ID-proper.patch | 34 + ...est-file-according-to-smack-3-domain-mode.patch | 33 + ...Add-xdg-shell-protocol-file-version-1.4.0.patch | 468 +++++++++ ...dd-minimize-feature-to-QWindow-using-wayl.patch | 1029 ++++++++++++++++++++ ...pgrade-to-support-current-version-weston-.patch | 772 +++++++++++++++ ...-IVI-Shell-protocol-file-version-patch-v6.patch | 128 +++ .../0021-Implement-initial-IVI-Shell-support.patch | 539 ++++++++++ .../qt5/qtwayland/0099_qtwayland_no_evdev.patch | 14 + ...018-packaging-enable-xdg-shell-at-runtime.patch | 31 + ..._egl_qt_wayland_client_buffer_integration.patch | 12 + .../recipes-qt/qt5/qtwayland_%.bbappend | 36 + .../recipes-qt/qt5/qtwebkit_%.bbappend | 1 + .../agl-service-mediaplayer_git.bb | 18 + .../recipes-graphics/images/agl-image-weston.bb | 12 - .../recipes-graphics/images/agl-image-weston.inc | 7 - .../packagegroups/packagegroup-agl-image-weston.bb | 17 - ...ton-crush-when-repeat-touching-very-quick.patch | 31 - .../0001-simple-id-agent-initial-commit.patch | 264 ----- .../0002-ivi-controller-load-id-agent-module.patch | 69 -- ...ler-add-resize-setting-suit-to-surface-si.patch | 62 -- .../wayland-ivi-extension/cmake-find-gtest.patch | 22 - .../disable-sanitizer-tests.patch | 13 - .../wayland/wayland-ivi-extension/test-path.patch | 55 -- .../wandboard_fix_build.patch | 13 - .../wayland/wayland-ivi-extension_1.1%.bbappend | 27 - .../wayland/wayland-ivi-extension_1.13.0.bb | 33 - .../wayland/wayland-ivi-extension_2.0.2.bb | 31 - .../recipes-graphics/wayland/weston-ini-conf.bb | 30 - .../wayland/weston-ini-conf.bbappend | 15 - .../wayland/weston-ini-conf/core.cfg | 4 - .../wayland/weston-ini-conf/hdmi-a-1-270.cfg | 6 - .../wayland/weston-ini-conf/hdmi-a-1-90.cfg | 6 - .../wayland/weston-ini-conf/id-agent.cfg | 2 - .../wayland/weston-ini-conf/ivishell.cfg | 4 - .../wayland/weston-ini-conf/shell.cfg | 3 - .../wayland/weston-ini-conf/virtualoutput.cfg | 7 - .../recipes-graphics/wayland/weston_%.bbappend | 1 - .../recipes-platform/images/agl-image-weston.bb | 9 + .../recipes-platform/images/agl-image-weston.inc | 7 + .../packagegroup-agl-graphical-services.bb | 14 + .../packagegroups/packagegroup-agl-image-weston.bb | 22 + .../packagegroup-agl-profile-graphical.bb | 20 + .../packagegroup-agl-smartdevicelink.bb | 17 - meta-agl-profile-hud/conf/layer.conf | 10 + meta-agl-profile-telematics/conf/layer.conf | 10 + .../agl-service-can-low-level_git.bb | 18 - .../recipes-config/agl-users/agl-users_0.1.bb | 27 - .../dev-mapping/dev-mapping.conf.default | 6 - .../recipes-config/dev-mapping/dev-mapping_0.1.bb | 18 - .../packagegroup-agl-app-framework.bb | 1 - .../packagegroup-agl-core-security.bbappend | 8 - .../packagegroup-agl-image-minimal.bbappend | 3 - .../web-runtime/web-runtime/web-runtime | 2 - .../web-runtime/web-runtime/web-runtime-webkit.qml | 13 - .../web-runtime/web-runtime/web-runtime.qml | 14 - .../recipes-core/web-runtime/web-runtime_0.1.bb | 42 - .../packagegroup-agl-core-security.bbappend | 8 + .../packagegroup-agl-image-boot.bbappend | 3 + .../packagegroup-agl-image-minimal.bbappend | 3 + meta-security/conf/layer.conf | 6 +- templates/base/bblayers.conf.sample | 8 - .../50_bblayers.conf.inc | 3 + .../agl-profile-graphical-html5/included.dep | 1 + .../agl-profile-graphical-qt5/50_bblayers.conf.inc | 9 + .../feature/agl-profile-graphical-qt5/included.dep | 1 + .../agl-profile-graphical/50_bblayers.conf.inc | 3 + .../feature/agl-profile-hud/50_bblayers.conf.inc | 3 + .../agl-profile-telematics/50_bblayers.conf.inc | 3 + 281 files changed, 6963 insertions(+), 7922 deletions(-) create mode 100644 docs/profiles.md create mode 100644 meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/harfbuzz/harfbuzz_1.4.8.bbappend create mode 100644 meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/mesa/mesa_%.bbappend create mode 100644 meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/libva_%.bbappend create mode 100644 meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bbappend create mode 100644 meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/virtual.cfg create mode 100644 meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend delete mode 100644 meta-agl-bsp/recipes-graphics/harfbuzz/harfbuzz_1.4.8.bbappend delete mode 100644 meta-agl-bsp/recipes-graphics/mesa/mesa_%.bbappend delete mode 100644 meta-agl-bsp/recipes-graphics/wayland/libva_%.bbappend create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bb create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/core.cfg create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/id-agent.cfg create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/ivishell.cfg create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/shell.cfg delete mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/virtual.cfg create mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/virtualoutput.cfg delete mode 100644 meta-agl-bsp/recipes-graphics/wayland/weston_%.bbappend create mode 100755 meta-agl-distro/scripts/oe-depends-dot create mode 100644 meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb delete mode 100644 meta-agl-profile-core/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb create mode 100644 meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb create mode 100644 meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default create mode 100644 meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb create mode 100644 meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb create mode 100644 meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service create mode 100644 meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/0001_fix_compile_issue_when_using_in_c++.patch create mode 100644 meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf create mode 100644 meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend create mode 100644 meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend create mode 100644 meta-agl-profile-core/recipes-connectivity/busybox/files/enable-wget-https.cfg create mode 100644 meta-agl-profile-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb create mode 100644 meta-agl-profile-core/recipes-connectivity/connman/.appends.core create mode 100644 meta-agl-profile-core/recipes-connectivity/connman/connman_%.bbappend create mode 100644 meta-agl-profile-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch create mode 100644 meta-agl-profile-core/recipes-connectivity/libnfc/libnfc_git.bb create mode 100644 meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch create mode 100644 meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb delete mode 100644 meta-agl-profile-core/recipes-core/images/agl-image-boot.bb delete mode 100644 meta-agl-profile-core/recipes-core/images/agl-image-boot.inc delete mode 100644 meta-agl-profile-core/recipes-core/images/agl-image-minimal-qa.bb delete mode 100644 meta-agl-profile-core/recipes-core/images/agl-image-minimal.bb delete mode 100644 meta-agl-profile-core/recipes-core/images/agl-image-minimal.inc delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-automotive.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-connectivity.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-graphics.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-kernel.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-multimedia.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-navi-lbs.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-os-commonlibs.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-security.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-speech-services.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-image-boot.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-image-minimal.bb delete mode 100644 meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-boot-agl.bb create mode 100644 meta-agl-profile-core/recipes-devtools/gdb/.appends.core create mode 100644 meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-core-devel.bb delete mode 100644 meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-devel.bb create mode 100644 meta-agl-profile-core/recipes-extended/gperf/.appends.core delete mode 100644 meta-agl-profile-core/recipes-ivi/images/agl-image-ivi-crosssdk.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/images/agl-image-ivi-qa.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/images/agl-image-ivi.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/images/agl-image-ivi.inc delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-image-ivi.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-automotive.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-connectivity.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-graphics.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-kernel.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-multimedia.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-navi-lbs.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-os-commonlibs.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-security.bb delete mode 100644 meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-speech-services.bb create mode 100644 meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch create mode 100644 meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch create mode 100644 meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch create mode 100644 meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch create mode 100644 meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch create mode 100644 meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch create mode 100644 meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch create mode 100644 meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch create mode 100644 meta-agl-profile-core/recipes-kernel/most/most.bb create mode 100644 meta-agl-profile-core/recipes-kernel/most/most.bbappend create mode 100644 meta-agl-profile-core/recipes-multimedia/pulseaudio/pulseaudio/10-unload-modules.pa create mode 100644 meta-agl-profile-core/recipes-platform/images/agl-image-boot.bb create mode 100644 meta-agl-profile-core/recipes-platform/images/agl-image-boot.inc create mode 100755 meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.bb create mode 100644 meta-agl-profile-core/recipes-platform/images/agl-image-minimal-qa.bb create mode 100644 meta-agl-profile-core/recipes-platform/images/agl-image-minimal.bb create mode 100644 meta-agl-profile-core/recipes-platform/images/agl-image-minimal.inc create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-multimedia.bb create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-navigation.bb create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb create mode 100644 meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb delete mode 100644 meta-agl-profile-demo/conf/layer.conf delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-agl.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-automotive.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-connectivity.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-graphics.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-multimedia.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-navi-lbs.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-security.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-speech-services.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-web.bb delete mode 100644 meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw.bb delete mode 100644 meta-agl-profile-demo/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb delete mode 100644 meta-agl-profile-demo/recipes-connectivity/bluez-alsa/files/bluez-alsa.service delete mode 100644 meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5/0001_fix_compile_issue_when_using_in_c++.patch delete mode 100644 meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5/bluetooth.conf delete mode 100644 meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5_%.bbappend delete mode 100644 meta-agl-profile-demo/recipes-connectivity/busybox/busybox_%.bbappend delete mode 100644 meta-agl-profile-demo/recipes-connectivity/busybox/files/enable-wget-https.cfg delete mode 100644 meta-agl-profile-demo/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb delete mode 100644 meta-agl-profile-demo/recipes-connectivity/connman/.appends.core delete mode 100644 meta-agl-profile-demo/recipes-connectivity/connman/connman_%.bbappend delete mode 100644 meta-agl-profile-demo/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch delete mode 100644 meta-agl-profile-demo/recipes-connectivity/libnfc/libnfc_git.bb delete mode 100644 meta-agl-profile-demo/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch delete mode 100644 meta-agl-profile-demo/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb delete mode 100644 meta-agl-profile-demo/recipes-connectivity/rygel/.appends.meta-multimedia delete mode 100644 meta-agl-profile-demo/recipes-connectivity/rygel/files/0001-Fix-missing-link-to-unistring-for-lms-plugin.patch delete mode 100644 meta-agl-profile-demo/recipes-connectivity/rygel/files/rygel.service delete mode 100644 meta-agl-profile-demo/recipes-connectivity/rygel/rygel_%.bbappend delete mode 100644 meta-agl-profile-demo/recipes-core/packagegroups/packagegroup-ivi-common-core-multimedia.bb delete mode 100644 meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0001-Fix-build-with-systemd-209.patch delete mode 100644 meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch delete mode 100644 meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch delete mode 100644 meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch delete mode 100644 meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon_2.11.1.bb delete mode 100644 meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon_2.15.0.bb delete mode 100644 meta-agl-profile-demo/recipes-kernel/mocca-usb/mocca-usb.bb delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/files/0004-most-video-set-device_caps.patch delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/files/0007-dim2-use-device-tree.patch delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/most.bb delete mode 100644 meta-agl-profile-demo/recipes-kernel/most/most.bbappend delete mode 100644 meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch delete mode 100644 meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager/audiomanager.service delete mode 100644 meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager_7.4.bb delete mode 100644 meta-agl-profile-demo/recipes-qt/.gitkeep delete mode 100644 meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-agl-appfw-native-qt5.bb delete mode 100644 meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-agl-demo-qt-examples.bb delete mode 100644 meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bbappend delete mode 100644 meta-agl-profile-demo/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtbase-native_git.bbappend delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtbase_%.bbappend delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtmultimedia_%.bbappend delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtsystems_%.bbappend delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0001-Implement-initial-IVI-shell-support-with-shell-integ.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0002-Fix-multiple-QWindow.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland/disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwayland_%.bbappend delete mode 100644 meta-agl-profile-demo/recipes-qt/qt5/qtwebkit_%.bbappend create mode 100644 meta-agl-profile-graphical-html5/conf/layer.conf create mode 100644 meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.service create mode 100644 meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.sh create mode 100644 meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5_git.bb create mode 100755 meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5-crosssdk.bb create mode 100644 meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.bb create mode 100644 meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.inc create mode 100644 meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb create mode 100644 meta-agl-profile-graphical-qt5/conf/layer.conf create mode 100644 meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb create mode 100644 meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-qt5.bb create mode 100755 meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb create mode 100644 meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb create mode 100644 meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc create mode 100644 meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb create mode 100644 meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb create mode 100644 meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb create mode 100644 meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-Implement-initial-IVI-shell-support-with-shell-integ.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-Fix-multiple-QWindow.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend create mode 100644 meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend create mode 100644 meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb delete mode 100644 meta-agl-profile-graphical/recipes-graphics/images/agl-image-weston.bb delete mode 100644 meta-agl-profile-graphical/recipes-graphics/images/agl-image-weston.inc delete mode 100644 meta-agl-profile-graphical/recipes-graphics/packagegroups/packagegroup-agl-image-weston.bb delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Resolve-weston-crush-when-repeat-touching-very-quick.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-initial-commit.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-controller-load-id-agent-module.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-add-resize-setting-suit-to-surface-si.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/cmake-find-gtest.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/disable-sanitizer-tests.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/test-path.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_1.1%.bbappend delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_1.13.0.bb delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_2.0.2.bb delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bb delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bbappend delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/core.cfg delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/id-agent.cfg delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/ivishell.cfg delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/shell.cfg delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/virtualoutput.cfg delete mode 100644 meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend create mode 100644 meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.bb create mode 100644 meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.inc create mode 100644 meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb create mode 100644 meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-image-weston.bb create mode 100644 meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb delete mode 100644 meta-agl-profile-graphical/recipes-sdl/packagegroups/packagegroup-agl-smartdevicelink.bb create mode 100644 meta-agl-profile-hud/conf/layer.conf create mode 100644 meta-agl-profile-telematics/conf/layer.conf delete mode 100644 meta-app-framework/recipes-apps/agl-service-can-low-level/agl-service-can-low-level_git.bb delete mode 100644 meta-app-framework/recipes-config/agl-users/agl-users_0.1.bb delete mode 100644 meta-app-framework/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default delete mode 100644 meta-app-framework/recipes-config/dev-mapping/dev-mapping_0.1.bb delete mode 100644 meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core-security.bbappend delete mode 100644 meta-app-framework/recipes-core/packagegroups/packagegroup-agl-image-minimal.bbappend delete mode 100755 meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime delete mode 100644 meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime-webkit.qml delete mode 100644 meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime.qml delete mode 100644 meta-app-framework/recipes-core/web-runtime/web-runtime_0.1.bb create mode 100644 meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend create mode 100644 meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend create mode 100644 meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend create mode 100644 templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc create mode 100644 templates/feature/agl-profile-graphical-html5/included.dep create mode 100644 templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc create mode 100644 templates/feature/agl-profile-graphical-qt5/included.dep create mode 100644 templates/feature/agl-profile-graphical/50_bblayers.conf.inc create mode 100644 templates/feature/agl-profile-hud/50_bblayers.conf.inc create mode 100644 templates/feature/agl-profile-telematics/50_bblayers.conf.inc diff --git a/docs/profiles.md b/docs/profiles.md new file mode 100644 index 000000000..6c7e76730 --- /dev/null +++ b/docs/profiles.md @@ -0,0 +1,134 @@ +# AGL Profiles + +The AGL Profiles cover the different use-cases that the AGL platform serves. This ranges from minimal systems without display, telematic systems, HUD, IVI, ADAS and more. Common to all of them is the use of the AGL APIs (agl-service-*). + +All systems have the 'core' profile in common. This small set of libraries and binaries is the essential set including the AGL APIs that every AGL system needs. All other profiles reuse the 'core' profile. + +The other profiles and their dependencies are currently: + + * agl-profile-core + * agl-profile-telematics + * agl-profile-hud + * agl-profile-graphical + * agl-profile-graphical-html5 + * agl-profile-graphical-qt5 + * agl-demo-platform + + + +## agl-profile-core +This profile contains the following images: +* agl-image-boot + * agl-image-minimal + * agl-image-minimal-crosssdk + +### agl-image-boot +This image is only meant to boot the target device and provide network, package-management and a shell. +All other functionality needs to be installed at runtime through 'dnf' using the provided package feeds and package-groups (e.g. dnf install profile-graphical-qt5) + +### agl-image-minimal +This is the smallest image that includes all (non-graphical) AGL APIs. + +### agl-image-minimal-crosssdk +This is the SDK for systems without display including the AGL APIs. + +## agl-profile-telematics +N.N. + +## agl-profile-hud +N.N. + +## agl-profile-graphical +This profile contains a basic graphical system with wayland/weston. It is used as a base for the more targeted profiles: +* agl-profile-graphical-html5 +* agl-profile-graphical-qt5 + +Part of this layer are the following images: +* agl-image-weston + +### agl-image-weston +Pure wayland + weston image but with all AGL service APIs. + +## agl-profile-graphical-html5 +This profile contains all components to build a html5 / web-based system and should be used as a base layer for further projects. +All AGL APIs are included. + +## agl-profile-graphical-qt5 +This profile is used as base for all projects that build on qt5 like the agl-demo-platform. +Part of this layer are the ffollowing images: +* agl-image-graphical-qt5 +* agl-image-graphical-qt5-crosssdk (THIS IS THE SDK TARGET WE AIM TO USE FOR AGL-DEMO-PLATFORM IN THE END) + +All AGL APIs are included. + + +All AGL APIs are included. + +### agl-image-graphical-qt5 +Image with wayland/weston and the qt5 packages installed. + +### agl-image-graphical-qt5-crosssdk +SDK based on agl-image-graphical-qt5 suitable for development under qt5. + + + +## agl-demo-platform +This layer builds on-top of agl-profile-graphical-qt5 and builds the full AGL demonstrator image. +It hosts these images: +* agl-demo-platform +* agl-demo-platform-crosssdk +* agl-demo-platform-qa + + + + +TLDR: + +``` +meta-agl/meta-agl-profile-core/recipes-platform +|-- images +| |-- agl-image-boot.bb +| |-- agl-image-boot.inc +| |-- agl-image-minimal-crosssdk.bb +| |-- agl-image-minimal-qa.bb +| |-- agl-image-minimal.bb +| `-- agl-image-minimal.inc +`-- packagegroups + |-- packagegroup-agl-core-boot.bb + |-- packagegroup-agl-core-connectivity.bb + |-- packagegroup-agl-core-multimedia.bb + |-- packagegroup-agl-core-navigation.bb + |-- packagegroup-agl-core-os-commonlibs.bb + |-- packagegroup-agl-core-security.bb + |-- packagegroup-agl-core-services.bb + |-- packagegroup-agl-image-boot.bb + `-- packagegroup-agl-image-minimal.bb + + meta-agl/meta-agl-profile-graphical/recipes-platform +|-- images +| |-- agl-image-weston.bb +| `-- agl-image-weston.inc +`-- packagegroups + |-- packagegroup-agl-graphical-services.bb + `-- packagegroup-agl-image-weston.bb + + meta-agl/meta-agl-profile-graphical-html5/recipes-platform +|-- images +| |-- agl-demo-platform-html5-crosssdk.bb +| |-- agl-demo-platform-html5.bb +| `-- agl-demo-platform-html5.inc +`-- packagegroups + `-- packagegroup-agl-demo-platform-html5.bb + + meta-agl/meta-agl-profile-graphical-qt5/recipes-platform +|-- images +| |-- agl-image-graphical-qt5-crosssdk.bb +| |-- agl-image-graphical-qt5.bb +| `-- agl-image-graphical-qt5.inc +`-- packagegroups + |-- packagegroup-agl-appfw-native-qt5.bb + |-- packagegroup-agl-demo-qt-examples.bb + |-- packagegroup-agl-profile-graphical-qt5.bb + `-- packagegroup-qt5-toolchain-target.bbappend +``` + diff --git a/meta-agl-bsp/conf/include/agl_m3ulcb-nogfx.inc b/meta-agl-bsp/conf/include/agl_m3ulcb-nogfx.inc index 1bc59149f..c0ebb5f65 100644 --- a/meta-agl-bsp/conf/include/agl_m3ulcb-nogfx.inc +++ b/meta-agl-bsp/conf/include/agl_m3ulcb-nogfx.inc @@ -10,6 +10,3 @@ DISTRO_FEATURES_append = " sota" OSTREE_KERNEL = "Image" IMAGE_BOOT_FILES_sota = "m3ulcb-ota-bootfiles/* Image-r8a7796-m3ulcb.dtb" OSTREE_BOOTLOADER ?= "u-boot" - -# HOTFIX during layer reorg -BBMASK .= "|meta-agl/meta-agl-profile-demo/recipes-qt/" \ No newline at end of file diff --git a/meta-agl-bsp/conf/include/agl_qemux86-64.inc b/meta-agl-bsp/conf/include/agl_qemux86-64.inc index 1fe839d68..a72f7b0f7 100644 --- a/meta-agl-bsp/conf/include/agl_qemux86-64.inc +++ b/meta-agl-bsp/conf/include/agl_qemux86-64.inc @@ -21,7 +21,7 @@ QB_KERNEL_CMDLINE_APPEND_append = " quiet" DISTRO_FEATURES_append = " sota" # Image support -AGL_EXTRA_IMAGE_FSTYPES = "wic.vmdk" +AGL_EXTRA_IMAGE_FSTYPES = "ext4 wic.vmdk" IMAGE_BOOT_FILES_sota = "u-boot-qemux86-64.rom" # Root device diff --git a/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/harfbuzz/harfbuzz_1.4.8.bbappend b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/harfbuzz/harfbuzz_1.4.8.bbappend new file mode 100644 index 000000000..db50df5d9 --- /dev/null +++ b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/harfbuzz/harfbuzz_1.4.8.bbappend @@ -0,0 +1,4 @@ +# 2017-09-13 hotfix for harfbuzz build +# Reference https://www.mail-archive.com/yocto@yoctoproject.org/msg36472.html + +acpaths = "-I ${STAGING_DATADIR_NATIVE}/aclocal/" diff --git a/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/mesa/mesa_%.bbappend b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/mesa/mesa_%.bbappend new file mode 100644 index 000000000..49e527707 --- /dev/null +++ b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/mesa/mesa_%.bbappend @@ -0,0 +1,6 @@ +# The gallium-llvm is recommended as software 3D graphics renderer +GALLIUM_LLVM = "gallium-llvm" +PACKAGECONFIG_append_qemux86 = " gallium ${GALLIUM_LLVM}" +PACKAGECONFIG_append_qemux86-64 = " gallium ${GALLIUM_LLVM}" + +DRIDRIVERS_append_intel-corei7-64 = ",i965" diff --git a/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/libva_%.bbappend b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/libva_%.bbappend new file mode 100644 index 000000000..eda8de38a --- /dev/null +++ b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/libva_%.bbappend @@ -0,0 +1,4 @@ +# This patch correct a bug in libva1_1.7.0.bb 1.8 inmeta-intel (no clue when it will be fixed) +# libva.bb calls for an x11 runtime dependency even if wayland is selected +# +RDEPENDS_${PN}-egl_remove = "${@bb.utils.contains("DISTRO_FEATURES", "x11", "", "${PN}-x11", d)}" diff --git a/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bbappend new file mode 100644 index 000000000..8fa08bc3b --- /dev/null +++ b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bbappend @@ -0,0 +1,9 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +# OVERRIDES save us some c'n'p below ... +OVERRIDES_prepend_qemux86 = "virtualmachine:" +OVERRIDES_prepend_qemux86-64 = "virtualmachine:" + +# Switch to the Virtual section that we have when a valid DRM device is found +SRC_URI_remove_virtualmachine = "file://hdmi-a-1-270.cfg" +SRC_URI_append_virtualmachine = " file://virtual.cfg" diff --git a/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/virtual.cfg b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/virtual.cfg new file mode 100644 index 000000000..25a8fae94 --- /dev/null +++ b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/virtual.cfg @@ -0,0 +1,18 @@ +[output] +name=Virtual-1 +transform=270 +mode=1920x1080 +#mode=1600x1200 +#mode=1680x1050 +#mode=1400x1050 +#mode=1600x900 +#mode=1280x1024 +#mode=1440x900 +#mode=1280x960 +#mode=1360x768 +#mode=1280x800 +#mode=1280x768 +#mode=1280x720 +#mode=800x600 +#mode=848x480 +#mode=640x480 diff --git a/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend new file mode 100644 index 000000000..9aaea5f69 --- /dev/null +++ b/meta-agl-bsp/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend @@ -0,0 +1,3 @@ +RDEPENDS_${PN}_append_qemux86 = " mesa-megadriver" +RDEPENDS_${PN}_append_qemux86-64 = " mesa-megadriver" +RDEPENDS_${PN}_append_intel-corei7-64 = " mesa-megadriver" diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-bsp/meta-rcar-gen3/recipes-graphics/wayland/weston_%.bbappend index 079ff496a..38590dcdb 100644 --- a/meta-agl-bsp/meta-rcar-gen3/recipes-graphics/wayland/weston_%.bbappend +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-graphics/wayland/weston_%.bbappend @@ -1,7 +1 @@ -FILES_${PN}_append_rcar-gen3 = " \ - ${libexecdir}/weston-screenshooter \ - ${libexecdir}/weston-ivi-shell-user-interface \ - ${libexecdir}/weston-keyboard \ - ${libexecdir}/weston-simple-im \ - ${libexecdir}/weston-desktop-shell \ -" +DEPENDS_append_ulcb = " gstreamer1.0-plugins-base" diff --git a/meta-agl-bsp/recipes-graphics/harfbuzz/harfbuzz_1.4.8.bbappend b/meta-agl-bsp/recipes-graphics/harfbuzz/harfbuzz_1.4.8.bbappend deleted file mode 100644 index db50df5d9..000000000 --- a/meta-agl-bsp/recipes-graphics/harfbuzz/harfbuzz_1.4.8.bbappend +++ /dev/null @@ -1,4 +0,0 @@ -# 2017-09-13 hotfix for harfbuzz build -# Reference https://www.mail-archive.com/yocto@yoctoproject.org/msg36472.html - -acpaths = "-I ${STAGING_DATADIR_NATIVE}/aclocal/" diff --git a/meta-agl-bsp/recipes-graphics/mesa/mesa_%.bbappend b/meta-agl-bsp/recipes-graphics/mesa/mesa_%.bbappend deleted file mode 100644 index 49e527707..000000000 --- a/meta-agl-bsp/recipes-graphics/mesa/mesa_%.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -# The gallium-llvm is recommended as software 3D graphics renderer -GALLIUM_LLVM = "gallium-llvm" -PACKAGECONFIG_append_qemux86 = " gallium ${GALLIUM_LLVM}" -PACKAGECONFIG_append_qemux86-64 = " gallium ${GALLIUM_LLVM}" - -DRIDRIVERS_append_intel-corei7-64 = ",i965" diff --git a/meta-agl-bsp/recipes-graphics/wayland/libva_%.bbappend b/meta-agl-bsp/recipes-graphics/wayland/libva_%.bbappend deleted file mode 100644 index eda8de38a..000000000 --- a/meta-agl-bsp/recipes-graphics/wayland/libva_%.bbappend +++ /dev/null @@ -1,4 +0,0 @@ -# This patch correct a bug in libva1_1.7.0.bb 1.8 inmeta-intel (no clue when it will be fixed) -# libva.bb calls for an x11 runtime dependency even if wayland is selected -# -RDEPENDS_${PN}-egl_remove = "${@bb.utils.contains("DISTRO_FEATURES", "x11", "", "${PN}-x11", d)}" diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bb b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bb new file mode 100644 index 000000000..4628f96f8 --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bb @@ -0,0 +1,30 @@ +SUMMARY = "Startup script and systemd unit file for the Weston Wayland compositor" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +SRC_URI = "file://core.cfg \ + file://ivishell.cfg \ + file://id-agent.cfg \ + file://shell.cfg \ + file://hdmi-a-1-270.cfg \ + " + +S = "${WORKDIR}" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +do_compile() { + # Put all of our cfg files together. + rm -f ${WORKDIR}/weston.ini + for F in ${WORKDIR}/*.cfg; do + cat $F >> ${WORKDIR}/weston.ini + echo >> ${WORKDIR}/weston.ini + done + sed -i -e '$ d' ${WORKDIR}/weston.ini +} + +do_install_append() { + WESTON_INI_CONFIG=${sysconfdir}/xdg/weston + install -d ${D}${WESTON_INI_CONFIG} + install -m 0644 ${WORKDIR}/weston.ini ${D}${WESTON_INI_CONFIG}/weston.ini +} diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend index 8fa08bc3b..de388d862 100644 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend @@ -1,9 +1,17 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" -# OVERRIDES save us some c'n'p below ... -OVERRIDES_prepend_qemux86 = "virtualmachine:" -OVERRIDES_prepend_qemux86-64 = "virtualmachine:" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +# +SRC_URI += "${@bb.utils.contains("DISTRO_FEATURES", "virtual-display", "file://virtualoutput.cfg", "",d)}" + +do_configure_append() { + if ${@bb.utils.contains('DISTRO_FEATURES', 'virtual-display', 'true', 'false', d)}; then + echo virtual=1 >> ${WORKDIR}/core.cfg + fi + + if ${@bb.utils.contains('DISTRO_FEATURES', 'gst-record', 'true', 'false', d)}; then + echo recorder=true >> ${WORKDIR}/virtualoutput.cfg + fi +} -# Switch to the Virtual section that we have when a valid DRM device is found -SRC_URI_remove_virtualmachine = "file://hdmi-a-1-270.cfg" -SRC_URI_append_virtualmachine = " file://virtual.cfg" diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/core.cfg b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/core.cfg new file mode 100644 index 000000000..a0ec1e181 --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/core.cfg @@ -0,0 +1,4 @@ +[core] +shell=ivi-shell.so +backend=drm-backend.so +require-input=false diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg new file mode 100644 index 000000000..dffc2b6dd --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg @@ -0,0 +1,6 @@ +# A display is connected to HDMI-A-1 and needs to be rotated 270 degrees +# to have a proper orientation of the homescreen. For example the various sizes +# of the GeChic display or the Dell display. +[output] +name=HDMI-A-1 +transform=270 diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg new file mode 100644 index 000000000..88a692a1b --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg @@ -0,0 +1,6 @@ +# A display is connected to HDMI-A-1 and needs to be rotated 90 degrees +# to have a proper orientation of the homescreen. For example, the 'eGalax' +# display used in some instances. +[output] +name=HDMI-A-1 +transform=90 diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/id-agent.cfg b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/id-agent.cfg new file mode 100644 index 000000000..726fca5f1 --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/id-agent.cfg @@ -0,0 +1,2 @@ +[id-agent] +default-id-offset=1000 diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/ivishell.cfg b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/ivishell.cfg new file mode 100644 index 000000000..f0548f291 --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/ivishell.cfg @@ -0,0 +1,4 @@ +[ivi-shell] +ivi-input-module=ivi-input-controller.so +ivi-module=ivi-controller.so +id-agent-module=simple-id-agent.so diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/shell.cfg b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/shell.cfg new file mode 100644 index 000000000..056770427 --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/shell.cfg @@ -0,0 +1,3 @@ +[shell] +locking=true +panel-location=none diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/virtual.cfg b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/virtual.cfg deleted file mode 100644 index 25a8fae94..000000000 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/virtual.cfg +++ /dev/null @@ -1,18 +0,0 @@ -[output] -name=Virtual-1 -transform=270 -mode=1920x1080 -#mode=1600x1200 -#mode=1680x1050 -#mode=1400x1050 -#mode=1600x900 -#mode=1280x1024 -#mode=1440x900 -#mode=1280x960 -#mode=1360x768 -#mode=1280x800 -#mode=1280x768 -#mode=1280x720 -#mode=800x600 -#mode=848x480 -#mode=640x480 diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/virtualoutput.cfg b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/virtualoutput.cfg new file mode 100644 index 000000000..76f536ff8 --- /dev/null +++ b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/virtualoutput.cfg @@ -0,0 +1,7 @@ +[output] +name=virtual1 +mode=1920x1080@30 +ip=192.168.20.99 +port=5005 +bitrate=3000000 +crop=384x368@0x0 diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-bsp/recipes-graphics/wayland/weston_%.bbappend deleted file mode 100644 index 9aaea5f69..000000000 --- a/meta-agl-bsp/recipes-graphics/wayland/weston_%.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -RDEPENDS_${PN}_append_qemux86 = " mesa-megadriver" -RDEPENDS_${PN}_append_qemux86-64 = " mesa-megadriver" -RDEPENDS_${PN}_append_intel-corei7-64 = " mesa-megadriver" diff --git a/meta-agl-distro/conf/distro/poky-agl.conf b/meta-agl-distro/conf/distro/poky-agl.conf index 8e8fd7ae1..065baf24f 100644 --- a/meta-agl-distro/conf/distro/poky-agl.conf +++ b/meta-agl-distro/conf/distro/poky-agl.conf @@ -146,8 +146,14 @@ INITRAMFS_FSTYPES := "${AGL_DEFAULT_INITRAMFS_FSTYPES} ${AGL_EXTRA_INITRAMFS_FST # THE FUTURE is 'wic' # IMAGE_FSTYPES_append = " wic" +# enable the packagemanagement +IMAGE_FEATURES =+ "package-management" +PACKAGE_FEED_URIS = "http://192.168.7.1:8000/tmp/deploy/" +PACKAGE_FEED_BASE_PATHS = "rpm" +PACKAGE_FEED_ARCHS = "" +#${PACKAGE_ARCHS}" + # Fix for rpm metadata clash between nativesdk-cmake and nativesdk-qtbase-tools # (revalidate after 2017-10-15) -DIRFILES_pn-nativesdk-cmake = "1" - +#DIRFILES_pn-nativesdk-cmake = "1" diff --git a/meta-agl-distro/scripts/oe-depends-dot b/meta-agl-distro/scripts/oe-depends-dot new file mode 100755 index 000000000..5cec23bf0 --- /dev/null +++ b/meta-agl-distro/scripts/oe-depends-dot @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2018 Wind River Systems, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import os +import sys +import argparse +import logging +import re + +class Dot(object): + def __init__(self): + parser = argparse.ArgumentParser( + description="Analyse recipe-depends.dot generated by bitbake -g", + epilog="Use %(prog)s --help to get help") + parser.add_argument("dotfile", + help = "Specify the dotfile", nargs = 1, action='store', default='') + parser.add_argument("-k", "--key", + help = "Specify the key, e.g., recipe name", + action="store", default='') + parser.add_argument("-d", "--depends", + help = "Print the key's dependencies", + action="store_true", default=False) + parser.add_argument("-w", "--why", + help = "Print why the key is built", + action="store_true", default=False) + parser.add_argument("-r", "--remove", + help = "Remove duplicated dependencies to reduce the size of the dot files." + " For example, A->B, B->C, A->C, then A->C can be removed.", + action="store_true", default=False) + + self.args = parser.parse_args() + + if len(sys.argv) != 3 and len(sys.argv) < 5: + print('ERROR: Not enough args, see --help for usage') + + def main(self): + #print(self.args.dotfile[0]) + # The format is {key: depends} + depends = {} + with open(self.args.dotfile[0], 'r') as f: + for line in f.readlines(): + if ' -> ' not in line: + continue + line_no_quotes = line.replace('"', '') + m = re.match("(.*) -> (.*)", line_no_quotes) + if not m: + print('WARNING: Found unexpected line: %s' % line) + continue + key = m.group(1) + if key == "meta-world-pkgdata": + continue + dep = m.group(2) + if key in depends: + if not key in depends[key]: + depends[key].add(dep) + else: + print('WARNING: Fonud duplicated line: %s' % line) + else: + depends[key] = set() + depends[key].add(dep) + + if self.args.remove: + reduced_depends = {} + for k, deps in depends.items(): + child_deps = set() + added = set() + # Both direct and indirect depends are already in the dict, so + # we don't have to do this recursively. + for dep in deps: + if dep in depends: + child_deps |= depends[dep] + + reduced_depends[k] = deps - child_deps + outfile= '%s-reduced%s' % (self.args.dotfile[0][:-4], self.args.dotfile[0][-4:]) + with open(outfile, 'w') as f: + print('Saving reduced dot file to %s' % outfile) + f.write('digraph depends {\n') + for k, v in reduced_depends.items(): + for dep in v: + f.write('"%s" -> "%s"\n' % (k, dep)) + f.write('}\n') + sys.exit(0) + + if self.args.key not in depends: + print("ERROR: Can't find key %s in %s" % (self.args.key, self.args.dotfile[0])) + sys.exit(1) + + if self.args.depends: + if self.args.key in depends: + print('Depends: %s' % ' '.join(depends[self.args.key])) + + reverse_deps = [] + if self.args.why: + for k, v in depends.items(): + if self.args.key in v and not k in reverse_deps: + reverse_deps.append(k) + print('Because: %s' % ' '.join(reverse_deps)) + +if __name__ == "__main__": + try: + dot = Dot() + ret = dot.main() + except Exception as esc: + ret = 1 + import traceback + traceback.print_exc() + sys.exit(ret) diff --git a/meta-agl-profile-core/conf/include/agl-devel.inc b/meta-agl-profile-core/conf/include/agl-devel.inc index 705b1739a..09d855c05 100644 --- a/meta-agl-profile-core/conf/include/agl-devel.inc +++ b/meta-agl-profile-core/conf/include/agl-devel.inc @@ -1,8 +1,8 @@ IMAGE_FEATURES =+ "debug-tweaks eclipse-debug tools-debug tools-profile" -#IMAGE_INSTALL_append = " \ -# packagegroup-agl-core-devel \ -#" +IMAGE_INSTALL_append = " \ + packagegroup-agl-core-devel \ +" IMAGE_INSTALL_append = "${@bb.utils.contains('IMAGE_FSTYPES', 'wic.vmdk', ' open-vm-tools vboxguestdrivers', '', d)}" diff --git a/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb new file mode 100644 index 000000000..78d96e928 --- /dev/null +++ b/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb @@ -0,0 +1,18 @@ +SUMMARY = "Low level CAN service" +DESCRIPTION = "AGL Service application for read and decode CAN messages" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/low-level-can-service" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/low-level-can-service;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "d8d990528ea9746b21788f97be3fdbcc392c5d96" + +PV = "5.0+git${SRCPV}" +S = "${WORKDIR}/git" + +RDEPENDS_${PN} = "dev-mapping" + +inherit cmake aglwgt pkgconfig + diff --git a/meta-agl-profile-core/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb deleted file mode 100644 index c5cf71c12..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Mediaplayer Service Binding" -DESCRIPTION = "AGL Mediaplayer Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-mediaplayer" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-service-mediaplayer;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c gstreamer1.0 gstreamer1.0-plugins-base" -RDEPENDS_${PN} = "agl-service-mediascanner gstreamer1.0-plugins-bad-waylandsink" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb b/meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb new file mode 100644 index 000000000..79a9461e0 --- /dev/null +++ b/meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb @@ -0,0 +1,27 @@ +inherit allarch useradd + +SUMMARY = "AGL Users Seed" +DESCRIPTION = "This is a core framework component that\ + defines how users are managed and who are the default users." + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +ALLOW_EMPTY_${PN} = "1" + +USERADD_PACKAGES = "${PN}" + +USERADDEXTENSION = "useradd-staticids" + +GROUPADD_PARAM_${PN} = "\ + --system display ; \ + --system weston-launch ; \ + -g 1001 agl-driver ; \ + -g 1002 agl-passenger \ +" + +USERADD_PARAM_${PN} = "\ + -g 1001 -G display -u 1001 -o -d /home/1001 -m -K PASS_MAX_DAYS=-1 agl-driver ; \ + -g 1002 -G display -u 1002 -o -d /home/1002 -m -K PASS_MAX_DAYS=-1 agl-passenger ; \ + --gid display --groups weston-launch,video,input --home-dir /run/platform/display --shell /bin/false --comment \"Display daemon\" --key PASS_MAX_DAYS=-1 display \ +" diff --git a/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default b/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default new file mode 100644 index 000000000..7bd8bf2eb --- /dev/null +++ b/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default @@ -0,0 +1,6 @@ +; Default CAN device mapping +; Format has to follow ini rules key="value", notice " around value. + +[CANbus-mapping] +hs="can0" +ls="can0" diff --git a/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb b/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb new file mode 100644 index 000000000..befb5443f --- /dev/null +++ b/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb @@ -0,0 +1,18 @@ +inherit allarch + +SUMMARY = "AGL Device mapping configuration file" +DESCRIPTION = "This provide default dev-mapping.conf file \ + that defines mapping between kernel device and logical name \ + used in low-can binding by example." + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://dev-mapping.conf.default" + +do_install() { + install -d ${D}${sysconfdir} + install -m 0644 ${WORKDIR}/dev-mapping.conf.default ${D}${sysconfdir}/dev-mapping.conf +} diff --git a/meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb b/meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb new file mode 100644 index 000000000..6379ec38f --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb @@ -0,0 +1,38 @@ +SUMMARY = "Bluetooth Audio ALSA Backend" +HOMEPAGE = "https://github.com/Arkq/bluez-alsa" +SECTION = "libs" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=bb3e99e80c5d718213f35ae1def4c106" + +SRC_URI = "git://github.com/Arkq/bluez-alsa.git;protocol=https;branch=master" +SRCREV = "9045edb436ea755f395a2e09e4525b5defad286a" + +SRC_URI += "file://bluez-alsa.service" + +S = "${WORKDIR}/git" + +DEPENDS += "alsa-lib bluez5 systemd glib-2.0 sbc" + +PACKAGECONFIG[aac] = "--enable-aac, --disable-aac, " +PACKAGECONFIG[aptx] = "--enable-aptx,--disable-aptx," +PACKAGECONFIG[hcitop] = "--enable-hcitop, --disable-hcitop, libbsd ncurses" + +inherit autotools pkgconfig +inherit systemd + +SYSTEMD_AUTO_ENABLE = "enable" +SYSTEMD_SERVICE_${PN} = "bluez-alsa.service" + +PACKAGECONFIG += "hcitop" + +do_install_append () { + install -d ${D}${base_libdir}/systemd/system + install -m 0644 ${WORKDIR}/bluez-alsa.service ${D}${base_libdir}/systemd/system +} + +FILES_${PN} += "\ + ${datadir}/alsa/alsa.conf.d/20-bluealsa.conf\ + ${libdir}/alsa-lib/libasound_module_ctl_bluealsa.so\ + ${libdir}/alsa-lib/libasound_module_pcm_bluealsa.so\ +" diff --git a/meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service b/meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service new file mode 100644 index 000000000..671815e03 --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service @@ -0,0 +1,11 @@ +[Unit] +Description=Bluetooth Audio ALSA Backend +After=bluetooth.service +Requires=bluetooth.service + +[Service] +Type=simple +ExecStart=/usr/bin/bluealsa + +[Install] +WantedBy=multi-user.target diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/0001_fix_compile_issue_when_using_in_c++.patch b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/0001_fix_compile_issue_when_using_in_c++.patch new file mode 100644 index 000000000..ba2f33c62 --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/0001_fix_compile_issue_when_using_in_c++.patch @@ -0,0 +1,23 @@ +diff -urN bluez-5.22.orig/lib/bluetooth.h bluez-5.22/lib/bluetooth.h +--- bluez-5.22.orig/lib/bluetooth.h 2013-12-10 15:59:06.000000000 +0900 ++++ bluez-5.22/lib/bluetooth.h 2015-10-28 13:34:25.749335768 +0900 +@@ -158,16 +158,16 @@ + #define bt_get_unaligned(ptr) \ + ({ \ + struct __attribute__((packed)) { \ +- typeof(*(ptr)) __v; \ +- } *__p = (typeof(__p)) (ptr); \ ++ __typeof__(*(ptr)) __v; \ ++ } *__p = (__typeof__(__p)) (ptr); \ + __p->__v; \ + }) + + #define bt_put_unaligned(val, ptr) \ + do { \ + struct __attribute__((packed)) { \ +- typeof(*(ptr)) __v; \ +- } *__p = (typeof(__p)) (ptr); \ ++ __typeof__(*(ptr)) __v; \ ++ } *__p = (__typeof__(__p)) (ptr); \ + __p->__v = (val); \ + } while(0) diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf new file mode 100644 index 000000000..1f2762de7 --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend new file mode 100644 index 000000000..c5afa875f --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend @@ -0,0 +1,13 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" +SRC_URI_append = " file://bluetooth.conf" + +APPLY_v522 = "${@str('no' if '${PV}' != '5.22' else 'yes')}" + +SRC_URI_append = "\ + file://0001_fix_compile_issue_when_using_in_c++.patch;apply=${APPLY_v522} \ +" + + +do_install_append() { + install -m 0644 ${WORKDIR}/bluetooth.conf ${D}${sysconfdir}/dbus-1/system.d/bluetooth.conf +} diff --git a/meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend b/meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend new file mode 100644 index 000000000..198b651dd --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend @@ -0,0 +1,2 @@ +SRC_URI += "file://enable-wget-https.cfg" +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" diff --git a/meta-agl-profile-core/recipes-connectivity/busybox/files/enable-wget-https.cfg b/meta-agl-profile-core/recipes-connectivity/busybox/files/enable-wget-https.cfg new file mode 100644 index 000000000..e92006bef --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/busybox/files/enable-wget-https.cfg @@ -0,0 +1,3 @@ +# Thu Jun 8 17:32:07 2017 +CONFIG_FEATURE_WGET_OPENSSL=y +CONFIG_FEATURE_WGET_SSL_HELPER=y diff --git a/meta-agl-profile-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb b/meta-agl-profile-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb new file mode 100644 index 000000000..02afef75f --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb @@ -0,0 +1,26 @@ +SUMMARY = "A simple ncurses interface for connman" +DESCRIPTION = "A simple ncurses interface for connman" +HOMEPAGE = "https://gitlab.com/iotbzh/connman-json-client" + +SECTION = "console/network" + +DEPENDS = "dbus ncurses connman json-c" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381" + +SRC_URI = "git://gitlab.com/iotbzh/connman-json-client.git;protocol=https;rev=ad4261a2f87c914667b1f6841c913f6b08d373e2" + +inherit autotools pkgconfig + +EXTRA_AUTORECONF += " -i" +EXTRA_OECONF += " --disable-optimization --enable-debug" + +S = "${WORKDIR}/git" + +do_install () { + install -dm755 ${D}${bindir} + install -Dm755 connman_ncurses ${D}${bindir} +} + +FILES_${PN} = "${bindir}/connman_ncurses" diff --git a/meta-agl-profile-core/recipes-connectivity/connman/.appends.core b/meta-agl-profile-core/recipes-connectivity/connman/.appends.core new file mode 100644 index 000000000..e69de29bb diff --git a/meta-agl-profile-core/recipes-connectivity/connman/connman_%.bbappend b/meta-agl-profile-core/recipes-connectivity/connman/connman_%.bbappend new file mode 100644 index 000000000..e41cbe954 --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/connman/connman_%.bbappend @@ -0,0 +1,3 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +SRC_URI += "file://0001-disable-when-booting-over-nfs.patch" diff --git a/meta-agl-profile-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch b/meta-agl-profile-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch new file mode 100644 index 000000000..95fc0a905 --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch @@ -0,0 +1,11 @@ +--- a/src/connman.service.in 2016-08-15 13:51:03.479478140 +0200 ++++ b/src/connman.service.in 2016-08-15 13:51:33.469478267 +0200 +@@ -7,6 +7,7 @@ RequiresMountsFor=@localstatedir@/lib/co + After=dbus.service network-pre.target systemd-sysusers.service + Before=network.target multi-user.target shutdown.target + Wants=network.target + Conflicts=systemd-resolved.service ++ConditionKernelCommandLine=!root=/dev/nfs + + [Service] + Type=dbus diff --git a/meta-agl-profile-core/recipes-connectivity/libnfc/libnfc_git.bb b/meta-agl-profile-core/recipes-connectivity/libnfc/libnfc_git.bb new file mode 100644 index 000000000..bd216f815 --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/libnfc/libnfc_git.bb @@ -0,0 +1,18 @@ +SUMMARY = "libnfc" +DESCRIPTION = "Platform independent Near Field Communication (NFC) library" +HOMEPAGE = "https://github.com/nfc-tools/libnfc" +SECTION = "apps" + +DEPENDS = "libusb" + +LICENSE = "LGPLv3" +LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=b52f2d57d10c4f7ee67a7eb9615d5d24" + +inherit cmake pkgconfig + +SRC_URI = "git://github.com/nfc-tools/libnfc;protocol=https;branch=master" +SRCREV = "2d4543673e9b76c02679ca8b89259659f1afd932" + +PV = "1.7.1+git${SRCPV}" +S = "${WORKDIR}/git" + diff --git a/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch b/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch new file mode 100644 index 000000000..86b7392df --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch @@ -0,0 +1,40 @@ +From 3aeaf8054fcb2617ca8f6196ca32be3e69337f77 Mon Sep 17 00:00:00 2001 +From: Martin Kelly +Date: Fri, 21 Apr 2017 10:29:19 -0700 +Subject: [PATCH] remove -I/usr/include in pkg-config + +This shouldn't be necessary as it's part of the default compiler include +paths anyway. Morever, it can cause GCC 6 C++ build failures in +downstream packages when combined with QMake (such as +qtmultimedia-rtlfm-radio-plugin). + +Fix these issues by removing it. + +Upstream-Status: Inappropriate [disable-feature] + +This patch should not go upstream because it breaks the ability to build +with --prefix. That's not a problem for Openembedded, but it is for +upstream more generally. See this mail thread for more information: + +http://lists.osmocom.org/pipermail/osmocom-sdr/2017-April/001580.html + +Signed-off-by: Martin Kelly +--- + librtlsdr.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/librtlsdr.pc.in b/librtlsdr.pc.in +index 5e55049..84b6d0c 100644 +--- a/librtlsdr.pc.in ++++ b/librtlsdr.pc.in +@@ -6,6 +6,6 @@ includedir=@includedir@ + Name: RTL-SDR Library + Description: C Utility Library + Version: @VERSION@ +-Cflags: -I${includedir}/ @RTLSDR_PC_CFLAGS@ ++Cflags: @RTLSDR_PC_CFLAGS@ + Libs: -L${libdir} -lrtlsdr -lusb-1.0 + Libs.private: @RTLSDR_PC_LIBS@ +-- +2.1.4 + diff --git a/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb b/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb new file mode 100644 index 000000000..7d5c0217d --- /dev/null +++ b/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb @@ -0,0 +1,26 @@ +SUMMARY = "Turns a Realtek RTL2832U-based DVB dongle into a SDR receiver" +DESCRIPTION = "DVB-T dongles based on the Realtek RTL2832U chipset can be used as Software Digital Radio adapters, since the chip allows transferring raw I/Q samples to the host, which is really used for DAB/DAB+/FM demodulation." +HOMEPAGE = "http://sdr.osmocom.org/trac/wiki/rtl-sdr" + +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \ + file://src/librtlsdr.c;endline=18;md5=1b05599c3ebd4d74857a0a7c45f3d4ef" + +DEPENDS = "libusb1" + +SRC_URI = "git://git.osmocom.org/rtl-sdr \ + file://0001-remove-I-usr-include-in-pkg-config.patch \ + " +SRCREV = "e3c03f738f5aef4dc51e2b741fbdb542b9cc1bb1" +S = "${WORKDIR}/git" + +inherit autotools pkgconfig + +EXTRA_OECONF = "--enable-driver-detach" +#CFLAGS_remove = " +do_configure_append() { + # remove included temporary path from pc file due to pass-through of OE CFLAGS + # debug-prefix-map + # See: http://lists.openembedded.org/pipermail/openembedded-devel/2016-May/107456.html + sed -i -e "s# -fdebug-prefix-map=.*##g" librtlsdr.pc +} \ No newline at end of file diff --git a/meta-agl-profile-core/recipes-core/images/agl-image-boot.bb b/meta-agl-profile-core/recipes-core/images/agl-image-boot.bb deleted file mode 100644 index 84cdbcf31..000000000 --- a/meta-agl-profile-core/recipes-core/images/agl-image-boot.bb +++ /dev/null @@ -1,9 +0,0 @@ -SUMMARY = "An AGL small image just capable of allowing a device to boot." - -require agl-image-boot.inc - -LICENSE = "MIT" - -IMAGE_INSTALL_append = "\ - packagegroup-agl-image-boot \ - " diff --git a/meta-agl-profile-core/recipes-core/images/agl-image-boot.inc b/meta-agl-profile-core/recipes-core/images/agl-image-boot.inc deleted file mode 100644 index 825393978..000000000 --- a/meta-agl-profile-core/recipes-core/images/agl-image-boot.inc +++ /dev/null @@ -1,10 +0,0 @@ -IMAGE_LINGUAS = " " - -inherit core-image - -IMAGE_INSTALL = "${CORE_IMAGE_EXTRA_INSTALL}" - -IMAGE_ROOTFS_SIZE ?= "8192" - -# Allow extra IMAGE_FSTYPES to be added by boards configs -IMAGE_FSTYPES += "${AGL_EXTRA_IMAGE_FSTYPES}" diff --git a/meta-agl-profile-core/recipes-core/images/agl-image-minimal-qa.bb b/meta-agl-profile-core/recipes-core/images/agl-image-minimal-qa.bb deleted file mode 100644 index b162f2904..000000000 --- a/meta-agl-profile-core/recipes-core/images/agl-image-minimal-qa.bb +++ /dev/null @@ -1,12 +0,0 @@ -SUMMARY = "An AGL small image just capable of allowing a device to boot and run tests." - -DESCRIPTION = "A minimal set of AGL Distribution. This image also has additional \ -packages (e.g. commandline tools) for Quality Assurance(QA)." - -require agl-image-minimal.bb - -LICENSE = "MIT" - -IMAGE_INSTALL_append = " \ - packagegroup-ivi-common-test \ - " diff --git a/meta-agl-profile-core/recipes-core/images/agl-image-minimal.bb b/meta-agl-profile-core/recipes-core/images/agl-image-minimal.bb deleted file mode 100644 index 1fd213d0f..000000000 --- a/meta-agl-profile-core/recipes-core/images/agl-image-minimal.bb +++ /dev/null @@ -1,9 +0,0 @@ -SUMMARY = "An AGL small image just capable of allowing a device to boot." - -require agl-image-minimal.inc - -LICENSE = "MIT" - -IMAGE_INSTALL_append = "\ - packagegroup-agl-image-minimal \ - " diff --git a/meta-agl-profile-core/recipes-core/images/agl-image-minimal.inc b/meta-agl-profile-core/recipes-core/images/agl-image-minimal.inc deleted file mode 100644 index 825393978..000000000 --- a/meta-agl-profile-core/recipes-core/images/agl-image-minimal.inc +++ /dev/null @@ -1,10 +0,0 @@ -IMAGE_LINGUAS = " " - -inherit core-image - -IMAGE_INSTALL = "${CORE_IMAGE_EXTRA_INSTALL}" - -IMAGE_ROOTFS_SIZE ?= "8192" - -# Allow extra IMAGE_FSTYPES to be added by boards configs -IMAGE_FSTYPES += "${AGL_EXTRA_IMAGE_FSTYPES}" diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-automotive.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-automotive.bb deleted file mode 100644 index d9f2279e1..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-automotive.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Automotive Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-automotive \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-connectivity.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-connectivity.bb deleted file mode 100644 index e909d5e5f..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-connectivity.bb +++ /dev/null @@ -1,15 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Connectivity Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-connectivity \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - dhcp-server \ - ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','connman','connman connman-client connman-tests connman-tools connman-ncurses','',d)} \ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-graphics.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-graphics.bb deleted file mode 100644 index 1cc6f457b..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-graphics.bb +++ /dev/null @@ -1,10 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Graphics Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-graphics \ - " - -ALLOW_EMPTY_${PN} = "1" diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-kernel.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-kernel.bb deleted file mode 100644 index 3d5556fd5..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-kernel.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Kernel Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-kernel \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-multimedia.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-multimedia.bb deleted file mode 100644 index 01ca4cb85..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-multimedia.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Multimedia Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-multimedia \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-navi-lbs.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-navi-lbs.bb deleted file mode 100644 index 2b04d5387..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-navi-lbs.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Navigation and Location Based Services Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-navi-lbs \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-os-commonlibs.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-os-commonlibs.bb deleted file mode 100644 index c44166e12..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-os-commonlibs.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Operating System and Common libraries Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-os-commonlibs \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-security.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-security.bb deleted file mode 100644 index eb5a68f0a..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-security.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Security Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-security \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-speech-services.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-speech-services.bb deleted file mode 100644 index a494e5889..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-core-speech-services.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Speech Services Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-speech-services \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-image-boot.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-image-boot.bb deleted file mode 100644 index 29f859c49..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-image-boot.bb +++ /dev/null @@ -1,18 +0,0 @@ -DESCRIPTION = "The minimal set of packages required by AGL" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-image-boot \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-core-boot-agl \ - " - - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-image-minimal.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-image-minimal.bb deleted file mode 100644 index 630c11d43..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-agl-image-minimal.bb +++ /dev/null @@ -1,27 +0,0 @@ -DESCRIPTION = "The minimal set of packages required by AGL" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-image-minimal \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-core-boot-agl \ - " - - -RDEPENDS_${PN} += "\ - packagegroup-agl-core-automotive \ - packagegroup-agl-core-connectivity \ - packagegroup-agl-core-graphics \ - packagegroup-agl-core-multimedia \ - packagegroup-agl-core-navi-lbs \ - packagegroup-agl-core-os-commonlibs \ - packagegroup-agl-core-speech-services \ - packagegroup-agl-core-security \ - packagegroup-agl-core-kernel \ - " diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-boot-agl.bb b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-boot-agl.bb deleted file mode 100644 index c9d679879..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-boot-agl.bb +++ /dev/null @@ -1,50 +0,0 @@ -# -# Copyright (C) 2007 OpenedHand Ltd. -# -# derived from oe-core: meta/recipes-core/packagegroups/packagegroup-core-boot.bb - -SUMMARY = "Minimal boot requirements" -DESCRIPTION = "The minimal set of packages required to boot the system" -LICENSE = "MIT" - -PACKAGE_ARCH = "${MACHINE_ARCH}" - -inherit packagegroup - -# -# Set by the machine configuration with packages essential for device bootup -# -MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= "" -MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= "" - -# Distro can override the following VIRTUAL-RUNTIME providers: -VIRTUAL-RUNTIME_dev_manager ?= "udev" -VIRTUAL-RUNTIME_login_manager ?= "busybox" -VIRTUAL-RUNTIME_init_manager ?= "sysvinit" -VIRTUAL-RUNTIME_initscripts ?= "initscripts" -VIRTUAL-RUNTIME_keymaps ?= "keymaps" - -SYSVINIT_SCRIPTS = "${@bb.utils.contains('MACHINE_FEATURES', 'rtc', 'busybox-hwclock', '', d)} \ - modutils-initscripts \ - init-ifupdown \ - ${VIRTUAL-RUNTIME_initscripts} \ - " - -RDEPENDS_${PN} = "\ - base-files \ - base-passwd \ - busybox \ - run-agl-postinsts \ - ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "${SYSVINIT_SCRIPTS}", "", d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "keyboard", "${VIRTUAL-RUNTIME_keymaps}", "", d)} \ - netbase \ - ${VIRTUAL-RUNTIME_login_manager} \ - ${VIRTUAL-RUNTIME_init_manager} \ - ${VIRTUAL-RUNTIME_dev_manager} \ - ${VIRTUAL-RUNTIME_update-alternatives} \ - ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}" - -RRECOMMENDS_${PN} = "\ - tzdata \ - ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}" - diff --git a/meta-agl-profile-core/recipes-devtools/gdb/.appends.core b/meta-agl-profile-core/recipes-devtools/gdb/.appends.core new file mode 100644 index 000000000..e69de29bb diff --git a/meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-core-devel.bb b/meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-core-devel.bb new file mode 100644 index 000000000..c1d6636e0 --- /dev/null +++ b/meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-core-devel.bb @@ -0,0 +1,25 @@ +SUMMARY = "Provides a set of tools for development for AGL DISTRO" +LICENSE = "MIT" + +inherit packagegroup + +RDEPENDS_${PN} = "\ + strace \ + ldd \ + less \ + vim \ + lsof \ + gdb \ + valgrind \ + perf \ + htop \ + powertop \ + latencytop \ + systemtap \ + screen \ + usbutils \ + rsync \ + tree \ + pstree \ + procps \ + " diff --git a/meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-devel.bb b/meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-devel.bb deleted file mode 100644 index ade8560ab..000000000 --- a/meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-devel.bb +++ /dev/null @@ -1,24 +0,0 @@ -SUMMARY = "Provides a set of tools for development for AGL DISTRO" -LICENSE = "MIT" - -inherit packagegroup - -RDEPENDS_${PN} = "\ - strace \ - ldd \ - less \ - vim \ - lsof \ - gdb \ - valgrind \ - perf \ - htop \ - powertop \ - latencytop \ - systemtap \ - screen \ - usbutils \ - rsync \ - tree \ - pstree \ - " diff --git a/meta-agl-profile-core/recipes-extended/gperf/.appends.core b/meta-agl-profile-core/recipes-extended/gperf/.appends.core new file mode 100644 index 000000000..e69de29bb diff --git a/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi-crosssdk.bb b/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi-crosssdk.bb deleted file mode 100644 index 0303d051d..000000000 --- a/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi-crosssdk.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "Cross SDK of AGL Distribution for IVI profile" - -DESCRIPTION = "Basic image for baseline of AGL Distribution for IVI profile. \ -It includes the full meta-toolchain, plus developement headers and libraries \ -to form a standalone cross SDK." - -require agl-image-ivi.bb - -LICENSE = "MIT" - -IMAGE_FEATURES += "dev-pkgs" -IMAGE_INSTALL += "kernel-dev" - -inherit populate_sdk - -# Task do_populate_sdk and do_rootfs can't be exec simultaneously. -# Both exec "createrepo" on the same directory, and so one of them -# can failed (randomly). -addtask do_populate_sdk after do_rootfs diff --git a/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi-qa.bb b/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi-qa.bb deleted file mode 100644 index 017439454..000000000 --- a/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi-qa.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "A basic system of AGL distribution of IVI profile for Quality Assurance(QA)" - -DESCRIPTION = "A basic set of AGL Distribution. This image also has additional \ -packages (e.g. commandline tools) for Quality Assurance(QA)." - -require agl-image-ivi.bb - -LICENSE = "MIT" - -IMAGE_INSTALL_append = " \ - packagegroup-agl-test \ - packagegroup-ivi-common-test \ - " - diff --git a/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi.bb b/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi.bb deleted file mode 100644 index dd4f89b15..000000000 --- a/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "A basic system of AGL distribution of IVI profile" - -DESCRIPTION = "Basic image for baseline of AGL Distribution for IVI profile." - -require agl-image-ivi.inc - -LICENSE = "MIT" - -IMAGE_INSTALL_append = "\ - packagegroup-agl-image-ivi \ - " - -DISTRO_FEATURES_append = " agl-core-image-profile" - -IMAGE_INSTALL += "\ - agl-desktop-config \ - " diff --git a/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi.inc b/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi.inc deleted file mode 100644 index 0b564840b..000000000 --- a/meta-agl-profile-core/recipes-ivi/images/agl-image-ivi.inc +++ /dev/null @@ -1,3 +0,0 @@ -require recipes-core/images/agl-image-minimal.inc - -IMAGE_FEATURES += "splash package-management ssh-server-dropbear" diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-image-ivi.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-image-ivi.bb deleted file mode 100644 index 075af913a..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-image-ivi.bb +++ /dev/null @@ -1,31 +0,0 @@ -SUMMARY = "The middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required for AGL Distribution" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-image-ivi \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-image-minimal \ -" - -RDEPENDS_${PN} += "\ - packagegroup-agl-ivi-automotive \ - packagegroup-agl-ivi-connectivity \ - packagegroup-agl-ivi-graphics \ - packagegroup-agl-ivi-multimedia \ - packagegroup-agl-ivi-navi-lbs \ - packagegroup-agl-ivi-os-commonlibs \ - packagegroup-agl-ivi-speech-services \ - packagegroup-agl-ivi-security \ - packagegroup-agl-ivi-kernel \ - " - -RDEPENDS_${PN} += "\ - agl-login-manager \ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-automotive.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-automotive.bb deleted file mode 100644 index f7221517f..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-automotive.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "The middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Automotive Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-automotive \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-connectivity.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-connectivity.bb deleted file mode 100644 index 664180d55..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-connectivity.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "The middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Connectivity Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-connectivity \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - ofono \ - rtl-sdr \ - rygel \ - rygel-plugin-media-export \ - rygel-plugin-lms \ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-graphics.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-graphics.bb deleted file mode 100644 index d7650564b..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-graphics.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "The middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Graphics Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-graphics \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-kernel.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-kernel.bb deleted file mode 100644 index be51817b7..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-kernel.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "The middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Kernel Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-kernel \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-multimedia.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-multimedia.bb deleted file mode 100644 index 11536405e..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-multimedia.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "The middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Multimedia Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-multimedia \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - gstreamer1.0-plugins-base-meta \ - gstreamer1.0-plugins-good-meta \ - lightmediascanner-meta \ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-navi-lbs.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-navi-lbs.bb deleted file mode 100644 index b7f47eecc..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-navi-lbs.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "The packages of middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Navigation and Location Based Services Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-navi-lbs \ - " - -RDEPENDS_${PN} += "\ - gpsd \ - geoclue \ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-os-commonlibs.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-os-commonlibs.bb deleted file mode 100644 index 0a9de8d5f..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-os-commonlibs.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "The packages of middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Operating System and Common libraries Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-os-commonlibs \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-security.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-security.bb deleted file mode 100644 index f651c50cd..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-security.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "The packages of middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Security Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-security \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-speech-services.bb b/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-speech-services.bb deleted file mode 100644 index eccebee9f..000000000 --- a/meta-agl-profile-core/recipes-ivi/packagegroups/packagegroup-agl-ivi-speech-services.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "The packages of middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required by Speech Services Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-ivi-speech-services \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch b/meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch new file mode 100644 index 000000000..dd811c81b --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch @@ -0,0 +1,472 @@ +From 9cb7cb85f59509ac445116e9458c502cf6cb74e6 Mon Sep 17 00:00:00 2001 +From: Christian Gromm +Date: Thu, 9 Nov 2017 13:20:23 +0100 +Subject: [PATCH 2/2] src: most: add auto conf feature + +This patch adds the auto configuration feature to the driver +sources. It is needed to have the driver configured automatically +upon start up w/o the need for userspace to set up sysfs. + +Signed-off-by: Christian Gromm +--- + driver/Makefile | 3 + + driver/default_conf.c | 162 ++++++++++++++++++++++++++++++++++++++++++++++ + driver/include/mostcore.h | 64 ++++++++++++++++++ + driver/mostcore/core.c | 120 ++++++++++++++++++++++++++++------ + 4 files changed, 331 insertions(+), 18 deletions(-) + create mode 100644 driver/default_conf.c + +diff --git a/Makefile b/Makefile +index e77a4b6..6d74ebe 100644 +--- a/Makefile ++++ b/Makefile +@@ -6,6 +6,9 @@ obj-m := mostcore.o + mostcore-y := mostcore/core.o + CFLAGS_core.o := -I$(src)/include/ + ++obj-m += default_conf.o ++CFLAGL_default_conf.o := -I$(src)/include ++ + obj-m += aim_cdev.o + aim_cdev-y := aim-cdev/cdev.o + CFLAGS_cdev.o := -I$(src)/include/ +diff --git a/default_conf.c b/default_conf.c +new file mode 100644 +index 0000000..adb1786 +--- /dev/null ++++ b/default_conf.c +@@ -0,0 +1,162 @@ ++/* ++ * default_conf.c - Default configuration for the MOST channels. ++ * ++ * Copyright (C) 2017, Microchip Technology Germany II GmbH & Co. KG ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * This file is licensed under GPLv2. ++ */ ++ ++#include "include/mostcore.h" ++#include ++ ++static struct most_config_probe config_probes[] = { ++ ++ /* OS81118 Control */ ++ { ++ .ch_name = "ep8f", ++ .cfg = { ++ .direction = MOST_CH_RX, ++ .data_type = MOST_CH_CONTROL, ++ .num_buffers = 16, ++ .buffer_size = 64, ++ }, ++ .aim_name = "cdev", ++ .aim_param = "inic-usb-crx", ++ }, ++ { ++ .ch_name = "ep0f", ++ .cfg = { ++ .direction = MOST_CH_TX, ++ .data_type = MOST_CH_CONTROL, ++ .num_buffers = 16, ++ .buffer_size = 64, ++ }, ++ .aim_name = "cdev", ++ .aim_param = "inic-usb-ctx", ++ }, ++ /* OS81118 Async */ ++ { ++ .ch_name = "ep8e", ++ .cfg = { ++ .direction = MOST_CH_RX, ++ .data_type = MOST_CH_ASYNC, ++ .num_buffers = 20, ++ .buffer_size = 1522, ++ }, ++ .aim_name = "networking", ++ .aim_param = "inic-usb-arx", ++ }, ++ { ++ .ch_name = "ep0e", ++ .cfg = { ++ .direction = MOST_CH_TX, ++ .data_type = MOST_CH_ASYNC, ++ .num_buffers = 20, ++ .buffer_size = 1522, ++ }, ++ .aim_name = "networking", ++ .aim_param = "inic-usb-atx", ++ }, ++ /* OS81210 Control */ ++ { ++ .ch_name = "ep87", ++ .cfg = { ++ .direction = MOST_CH_RX, ++ .data_type = MOST_CH_CONTROL, ++ .num_buffers = 16, ++ .buffer_size = 64, ++ }, ++ .aim_name = "cdev", ++ .aim_param = "inic-usb-crx", ++ }, ++ { ++ .ch_name = "ep07", ++ .cfg = { ++ .direction = MOST_CH_TX, ++ .data_type = MOST_CH_CONTROL, ++ .num_buffers = 16, ++ .buffer_size = 64, ++ }, ++ .aim_name = "cdev", ++ .aim_param = "inic-usb-ctx", ++ }, ++ /* OS81210 Async */ ++ { ++ .ch_name = "ep86", ++ .cfg = { ++ .direction = MOST_CH_RX, ++ .data_type = MOST_CH_ASYNC, ++ .num_buffers = 20, ++ .buffer_size = 1522, ++ }, ++ .aim_name = "networking", ++ .aim_param = "inic-usb-arx", ++ }, ++ { ++ .ch_name = "ep06", ++ .cfg = { ++ .direction = MOST_CH_TX, ++ .data_type = MOST_CH_ASYNC, ++ .num_buffers = 20, ++ .buffer_size = 1522, ++ }, ++ .aim_name = "networking", ++ .aim_param = "inic-usb-atx", ++ }, ++ /* Streaming channels (common for all INICs) */ ++ { ++ .ch_name = "ep01", ++ .cfg = { ++ .direction = MOST_CH_TX, ++ .data_type = MOST_CH_SYNC, ++ .num_buffers = 8, ++ .buffer_size = 2 * 12 * 42, ++ .subbuffer_size = 12, ++ .packets_per_xact = 42, ++ }, ++ .aim_name = "sound", ++ .aim_param = "ep01-6ch.6x16", ++ }, ++ { ++ .ch_name = "ep02", ++ .cfg = { ++ .direction = MOST_CH_TX, ++ .data_type = MOST_CH_ISOC, ++ .num_buffers = 8, ++ .buffer_size = 40 * 188, ++ .subbuffer_size = 188, ++ .packets_per_xact = 2, ++ }, ++ .aim_name = "cdev", ++ .aim_param = "inic-usb-itx1", ++ }, ++ ++ /* sentinel */ ++ {} ++}; ++ ++static struct most_config_set config_set = { ++ .probes = config_probes ++}; ++ ++static int __init mod_init(void) ++{ ++ most_register_config_set(&config_set); ++ return 0; ++} ++ ++static void __exit mod_exit(void) ++{ ++ most_deregister_config_set(&config_set); ++} ++ ++module_init(mod_init); ++module_exit(mod_exit); ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Andrey Shvetsov "); ++MODULE_DESCRIPTION("Default configuration for the MOST channels"); +diff --git a/include/mostcore.h b/include/mostcore.h +index dc87121..3c00efb 100644 +--- a/include/mostcore.h ++++ b/include/mostcore.h +@@ -145,6 +145,39 @@ struct most_channel_config { + u16 dbr_size; + }; + ++/** ++ * struct most_config_probe - matching rule, channel configuration and ++ * the optional AIM name used for the automatic configuration and linking ++ * of the channel ++ * @dev_name: optional matching device id ++ * ("usb_device 1-1:1.0," "dim2-12345678", etc.) ++ * @ch_name: matching channel name ("ep8f", "ca2", etc.) ++ * @cfg: configuration that will be applied for the found channel ++ * @aim_name: optional name of the AIM that will be linked to the channel ++ * ("cdev", "networking", "v4l", "sound") ++ * @aim_param: AIM dependent parameter (it is the character device name ++ * for the cdev AIM, PCM format for the audio AIM, etc.) ++ */ ++struct most_config_probe { ++ const char *dev_name; ++ const char *ch_name; ++ struct most_channel_config cfg; ++ const char *aim_name; ++ const char *aim_param; ++}; ++ ++/** ++ * struct most_config_set - the configuration set containing ++ * several automatic configurations for the different channels ++ * @probes: list of the matching rules and the configurations, ++ * that must be ended with the empty structure ++ * @list: list head used by the MostCore ++ */ ++struct most_config_set { ++ const struct most_config_probe *probes; ++ struct list_head list; ++}; ++ + /* + * struct mbo - MOST Buffer Object. + * @context: context for core completion handler +@@ -285,6 +318,37 @@ struct most_aim { + }; + + /** ++ * most_register_config_set - registers the configuration set ++ * ++ * @cfg_set: configuration set to be registered for the future probes ++ * ++ * The function registers the given configuration set. ++ * ++ * It is possible to register or deregister several configuration sets ++ * independently. Different configuration sets may contain the ++ * overlapped matching rules but later registered configuration set has ++ * the higher priority over the prior registered set. ++ * ++ * The only the first matched configuration is applied for each ++ * channel. ++ * ++ * The configuration for the channel is applied at the time of ++ * registration of the parent most_interface. ++ */ ++void most_register_config_set(struct most_config_set *cfg_set); ++ ++/** ++ * most_deregister_config_set - deregisters the prior registered ++ * configuration set ++ * ++ * @cfg_set: configuration set to be deregistered ++ * ++ * The calling of this function does not change the current ++ * configuration of the channels. ++ */ ++void most_deregister_config_set(struct most_config_set *cfg_set); ++ ++/** + * most_register_interface - Registers instance of the interface. + * @iface: Pointer to the interface instance description. + * +diff --git a/mostcore/core.c b/mostcore/core.c +index 9e0a352..6035cf0 100644 +--- a/mostcore/core.c ++++ b/mostcore/core.c +@@ -36,6 +36,8 @@ static struct class *most_class; + static struct device *core_dev; + static struct ida mdev_id; + static int dummy_num_buffers; ++static struct list_head config_probes; ++struct mutex config_probes_mt; /* config_probes */ + + struct most_c_aim_obj { + struct most_aim *ptr; +@@ -918,6 +920,30 @@ most_c_obj *get_channel_by_name(char *mdev, char *mdev_ch) + return c; + } + ++static int link_channel_to_aim(struct most_c_obj *c, struct most_aim *aim, ++ char *aim_param) ++{ ++ int ret; ++ struct most_aim **aim_ptr; ++ ++ if (!c->aim0.ptr) ++ aim_ptr = &c->aim0.ptr; ++ else if (!c->aim1.ptr) ++ aim_ptr = &c->aim1.ptr; ++ else ++ return -ENOSPC; ++ ++ *aim_ptr = aim; ++ ret = aim->probe_channel(c->iface, c->channel_id, ++ &c->cfg, &c->kobj, aim_param); ++ if (ret) { ++ *aim_ptr = NULL; ++ return ret; ++ } ++ ++ return 0; ++} ++ + /** + * add_link_store - store() function for add_link attribute + * @aim_obj: pointer to AIM object +@@ -946,45 +972,33 @@ static ssize_t add_link_store(struct most_aim_obj *aim_obj, + size_t len) + { + struct most_c_obj *c; +- struct most_aim **aim_ptr; + char buffer[STRING_SIZE]; + char *mdev; + char *mdev_ch; +- char *mdev_devnod; ++ char *aim_param; + char devnod_buf[STRING_SIZE]; + int ret; + size_t max_len = min_t(size_t, len + 1, STRING_SIZE); + + strlcpy(buffer, buf, max_len); + +- ret = split_string(buffer, &mdev, &mdev_ch, &mdev_devnod); ++ ret = split_string(buffer, &mdev, &mdev_ch, &aim_param); + if (ret) + return ret; + +- if (!mdev_devnod || *mdev_devnod == 0) { ++ if (!aim_param || *aim_param == 0) { + snprintf(devnod_buf, sizeof(devnod_buf), "%s-%s", mdev, + mdev_ch); +- mdev_devnod = devnod_buf; ++ aim_param = devnod_buf; + } + + c = get_channel_by_name(mdev, mdev_ch); + if (IS_ERR(c)) + return -ENODEV; + +- if (!c->aim0.ptr) +- aim_ptr = &c->aim0.ptr; +- else if (!c->aim1.ptr) +- aim_ptr = &c->aim1.ptr; +- else +- return -ENOSPC; +- +- *aim_ptr = aim_obj->driver; +- ret = aim_obj->driver->probe_channel(c->iface, c->channel_id, +- &c->cfg, &c->kobj, mdev_devnod); +- if (ret) { +- *aim_ptr = NULL; ++ ret = link_channel_to_aim(c, aim_obj->driver, aim_param); ++ if (ret) + return ret; +- } + + return len; + } +@@ -1679,6 +1693,73 @@ int most_deregister_aim(struct most_aim *aim) + } + EXPORT_SYMBOL_GPL(most_deregister_aim); + ++void most_register_config_set(struct most_config_set *cfg_set) ++{ ++ mutex_lock(&config_probes_mt); ++ list_add(&cfg_set->list, &config_probes); ++ mutex_unlock(&config_probes_mt); ++} ++EXPORT_SYMBOL(most_register_config_set); ++ ++void most_deregister_config_set(struct most_config_set *cfg_set) ++{ ++ mutex_lock(&config_probes_mt); ++ list_del(&cfg_set->list); ++ mutex_unlock(&config_probes_mt); ++} ++EXPORT_SYMBOL(most_deregister_config_set); ++ ++static int probe_aim(struct most_c_obj *c, ++ const char *aim_name, const char *aim_param) ++{ ++ struct most_aim_obj *aim_obj; ++ char buf[STRING_SIZE]; ++ ++ list_for_each_entry(aim_obj, &aim_list, list) { ++ if (!strcmp(aim_obj->driver->name, aim_name)) { ++ strlcpy(buf, aim_param ? aim_param : "", sizeof(buf)); ++ return link_channel_to_aim(c, aim_obj->driver, buf); ++ } ++ } ++ return 0; ++} ++ ++static bool probe_config_set(struct most_c_obj *c, ++ const char *dev_name, const char *ch_name, ++ const struct most_config_probe *p) ++{ ++ int err; ++ ++ for (; p->ch_name; p++) { ++ if ((p->dev_name && strcmp(dev_name, p->dev_name)) || ++ strcmp(ch_name, p->ch_name)) ++ continue; ++ ++ c->cfg = p->cfg; ++ if (p->aim_name) { ++ err = probe_aim(c, p->aim_name, p->aim_param); ++ if (err) ++ pr_err("failed to autolink %s to %s: %d\n", ++ ch_name, p->aim_name, err); ++ } ++ return true; ++ } ++ return false; ++} ++ ++static void find_configuration(struct most_c_obj *c, const char *dev_name, ++ const char *ch_name) ++{ ++ struct most_config_set *plist; ++ ++ mutex_lock(&config_probes_mt); ++ list_for_each_entry(plist, &config_probes, list) { ++ if (probe_config_set(c, dev_name, ch_name, plist->probes)) ++ break; ++ } ++ mutex_unlock(&config_probes_mt); ++} ++ + /** + * most_register_interface - registers an interface with core + * @iface: pointer to the instance of the interface description. +@@ -1777,6 +1858,7 @@ struct kobject *most_register_interface(struct most_interface *iface) + mutex_init(&c->start_mutex); + mutex_init(&c->nq_mutex); + list_add_tail(&c->list, &inst->channel_list); ++ find_configuration(c, iface->description, channel_name); + } + pr_info("registered new MOST device mdev%d (%s)\n", + inst->dev_id, iface->description); +@@ -1880,6 +1962,8 @@ static int __init most_init(void) + pr_info("init()\n"); + INIT_LIST_HEAD(&instance_list); + INIT_LIST_HEAD(&aim_list); ++ INIT_LIST_HEAD(&config_probes); ++ mutex_init(&config_probes_mt); + ida_init(&mdev_id); + + err = bus_register(&most_bus); +-- +2.7.4 + diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch b/meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch new file mode 100644 index 000000000..4703844a1 --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch @@ -0,0 +1,26 @@ +From b269994be937cbb31c0d73ecc899ca8a545a6a4a Mon Sep 17 00:00:00 2001 +From: Christian Gromm +Date: Mon, 4 Sep 2017 11:09:17 +0200 +Subject: [PATCH 3/5] core: remove kernel log for MBO status + +Signed-off-by: Christian Gromm +--- + driver/mostcore/core.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/mostcore/core.c b/mostcore/core.c +index 931efb9..595becc 100644 +--- a/mostcore/core.c ++++ b/mostcore/core.c +@@ -1348,8 +1348,6 @@ static void most_write_completion(struct mbo *mbo) + BUG_ON((!mbo) || (!mbo->context)); + + c = mbo->context; +- if (mbo->status == MBO_E_INVAL) +- pr_info("WARN: Tx MBO status: invalid\n"); + if (unlikely(c->is_poisoned || (mbo->status == MBO_E_CLOSE))) + trash_mbo(mbo); + else +-- +2.7.4 + diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch b/meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch new file mode 100644 index 000000000..010d4b0d0 --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch @@ -0,0 +1,25 @@ +From a5fd2ae8d4a3b2a8f7a33a4ea469ea7ee0d946ef Mon Sep 17 00:00:00 2001 +From: Christian Gromm +Date: Mon, 4 Sep 2017 15:36:38 +0200 +Subject: [PATCH 4/5] most: video: set device_caps + +Signed-off-by: Christian Gromm +--- + driver/aim-v4l2/video.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/aim-v4l2/video.c b/aim-v4l2/video.c +index e074841..6405a03 100644 +--- a/aim-v4l2/video.c ++++ b/aim-v4l2/video.c +@@ -263,6 +263,7 @@ static int vidioc_querycap(struct file *file, void *priv, + snprintf(cap->bus_info, sizeof(cap->bus_info), + "%s", mdev->iface->description); + ++ cap->device_caps = + cap->capabilities = + V4L2_CAP_READWRITE | + V4L2_CAP_TUNER | +-- +2.7.4 + diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch b/meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch new file mode 100644 index 000000000..ebaee9e14 --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch @@ -0,0 +1,25 @@ +From 7518453386ad3e82008186a6c9ca86ed8c136801 Mon Sep 17 00:00:00 2001 +From: Christian Gromm +Date: Mon, 4 Sep 2017 16:08:38 +0200 +Subject: [PATCH 5/5] most: video: set V4L2_CAP_DEVICE_CAPS flag + +Signed-off-by: Christian Gromm +--- + driver/aim-v4l2/video.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/aim-v4l2/video.c b/aim-v4l2/video.c +index 6405a03..db75d4d 100644 +--- a/aim-v4l2/video.c ++++ b/aim-v4l2/video.c +@@ -265,6 +265,7 @@ static int vidioc_querycap(struct file *file, void *priv, + + cap->device_caps = + cap->capabilities = ++ V4L2_CAP_DEVICE_CAPS | + V4L2_CAP_READWRITE | + V4L2_CAP_TUNER | + V4L2_CAP_VIDEO_CAPTURE; +-- +2.7.4 + diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch b/meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch new file mode 100644 index 000000000..59c6ae671 --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch @@ -0,0 +1,186 @@ +From 63bcd9b421ae7927948bffec9566db47f40ea290 Mon Sep 17 00:00:00 2001 +From: Andrey Shvetsov +Date: Tue, 30 Jan 2018 17:34:09 +0100 +Subject: [PATCH] staging: most: dim2: fix startup sequence + +Platform specific initializations (pdata->init) must be done before DIM2 +IP module startup (dim_startup). + +Signed-off-by: Andrey Shvetsov +--- + hdm-dim2/dim2_hdm.c | 90 +++++++++++++++++++++++++++++++++++++++--------------------------------------------------- + 1 file changed, 39 insertions(+), 51 deletions(-) + +diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c +index 893b8e4..e4629a5 100644 +--- a/hdm-dim2/dim2_hdm.c ++++ b/hdm-dim2/dim2_hdm.c +@@ -155,38 +155,6 @@ void dimcb_on_error(u8 error_id, const char *error_message) + } + + /** +- * startup_dim - initialize the dim2 interface +- * @pdev: platform device +- */ +-static int startup_dim(struct platform_device *pdev) +-{ +- struct dim2_hdm *dev = platform_get_drvdata(pdev); +- struct dim2_platform_data *pdata = pdev->dev.platform_data; +- u8 hal_ret; +- int ret; +- +- if (!pdata) { +- pr_err("missing platform data\n"); +- return -EINVAL; +- } +- +- ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; +- if (ret) +- return ret; +- +- pr_info("sync: num of frames per sub-buffer: %u\n", fcnt); +- hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); +- if (hal_ret != DIM_NO_ERROR) { +- pr_err("dim_startup failed: %d\n", hal_ret); +- if (pdata && pdata->destroy) +- pdata->destroy(pdata); +- return -ENODEV; +- } +- +- return 0; +-} +- +-/** + * try_start_dim_transfer - try to transfer a buffer on a channel + * @hdm_ch: channel specific data + * +@@ -727,10 +695,12 @@ static void dma_free(struct mbo *mbo, u32 size) + */ + static int dim2_probe(struct platform_device *pdev) + { ++ struct dim2_platform_data *pdata = pdev->dev.platform_data; + struct dim2_hdm *dev; + struct resource *res; + int ret, i; + struct kobject *kobj; ++ u8 hal_ret; + int irq; + + dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); +@@ -745,38 +715,59 @@ static int dim2_probe(struct platform_device *pdev) + if (IS_ERR(dev->io_base)) + return PTR_ERR(dev->io_base); + ++ if (!pdata) { ++ dev_err(&pdev->dev, "missing platform data\n"); ++ return -EINVAL; ++ } ++ ++ ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; ++ if (ret) ++ return ret; ++ ++ dev_info(&pdev->dev, "sync: num of frames per sub-buffer: %u\n", fcnt); ++ hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); ++ if (hal_ret != DIM_NO_ERROR) { ++ dev_err(&pdev->dev, "dim_startup failed: %d\n", hal_ret); ++ ret = -ENODEV; ++ goto err_bsp_destroy; ++ } ++ + irq = platform_get_irq(pdev, 0); + if (irq < 0) { + dev_err(&pdev->dev, "failed to get ahb0_int irq: %d\n", irq); +- return irq; ++ ret = irq; ++ goto err_shutdown_dim; + } + + ret = devm_request_irq(&pdev->dev, irq, dim2_ahb_isr, 0, + "dim2_ahb0_int", dev); + if (ret) { + dev_err(&pdev->dev, "failed to request ahb0_int irq %d\n", irq); +- return ret; ++ goto err_shutdown_dim; + } + + irq = platform_get_irq(pdev, 1); + if (irq < 0) { + dev_err(&pdev->dev, "failed to get mlb_int irq: %d\n", irq); +- return irq; ++ ret = irq; ++ goto err_shutdown_dim; + } + + ret = devm_request_irq(&pdev->dev, irq, dim2_mlb_isr, 0, + "dim2_mlb_int", dev); + if (ret) { + dev_err(&pdev->dev, "failed to request mlb_int irq %d\n", irq); +- return ret; ++ goto err_shutdown_dim; + } + + init_waitqueue_head(&dev->netinfo_waitq); + dev->deliver_netinfo = 0; +- dev->netinfo_task = kthread_run(&deliver_netinfo_thread, (void *)dev, ++ dev->netinfo_task = kthread_run(&deliver_netinfo_thread, dev, + "dim2_netinfo"); +- if (IS_ERR(dev->netinfo_task)) +- return PTR_ERR(dev->netinfo_task); ++ if (IS_ERR(dev->netinfo_task)) { ++ ret = PTR_ERR(dev->netinfo_task); ++ goto err_shutdown_dim; ++ } + + for (i = 0; i < DMA_CHANNELS; i++) { + struct most_channel_capability *cap = dev->capabilities + i; +@@ -833,20 +824,17 @@ static int dim2_probe(struct platform_device *pdev) + if (ret) + goto err_unreg_iface; + +- ret = startup_dim(pdev); +- if (ret) { +- dev_err(&pdev->dev, "failed to initialize DIM2\n"); +- goto err_destroy_bus; +- } +- + return 0; + +-err_destroy_bus: +- dim2_sysfs_destroy(&dev->bus); + err_unreg_iface: + most_deregister_interface(&dev->most_iface); + err_stop_thread: + kthread_stop(dev->netinfo_task); ++err_shutdown_dim: ++ dim_shutdown(); ++err_bsp_destroy: ++ if (pdata && pdata->destroy) ++ pdata->destroy(pdata); + + return ret; + } +@@ -863,6 +851,10 @@ static int dim2_remove(struct platform_device *pdev) + struct dim2_platform_data *pdata = pdev->dev.platform_data; + unsigned long flags; + ++ dim2_sysfs_destroy(&dev->bus); ++ most_deregister_interface(&dev->most_iface); ++ kthread_stop(dev->netinfo_task); ++ + spin_lock_irqsave(&dim_lock, flags); + dim_shutdown(); + spin_unlock_irqrestore(&dim_lock, flags); +@@ -870,10 +862,6 @@ static int dim2_remove(struct platform_device *pdev) + if (pdata && pdata->destroy) + pdata->destroy(pdata); + +- dim2_sysfs_destroy(&dev->bus); +- most_deregister_interface(&dev->most_iface); +- kthread_stop(dev->netinfo_task); +- + /* + * break link to local platform_device_id struct + * to prevent crash by unload platform device module +-- +libgit2 0.26.0 diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch b/meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch new file mode 100644 index 000000000..679fab79c --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch @@ -0,0 +1,378 @@ +From 8e16207392cd715ea88f6780981a3d55ab005588 Mon Sep 17 00:00:00 2001 +From: Andrey Shvetsov +Date: Mon, 12 Feb 2018 12:23:37 +0100 +Subject: [PATCH] staging: most: dim2: use device tree + +Current dim2 driver expects the existence of a platform driver that +implements the platform specific initialization and delivery of the irq +numbers. + +This patch integrates the device tree activity and platform specific +code into the driver. + +Signed-off-by: Andrey Shvetsov +--- + hdm-dim2/dim2_hdm.c | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- + hdm-dim2/dim2_hdm.h | 28 ---------------------------- + hdm-dim2/platform/dim2_arwen_mlb3.c | 165 --------------------------------------------------------------------------------------------------------------------------------------------------------------------- + hdm-dim2/platform/dim2_arwen_mlb6.c | 169 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + hdm-dim2/platform/dim2_h2_dt.c | 227 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + hdm-dim2/platform/dim2_mx6q.c | 192 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + hdm-dim2/platform/dim2_mx6q_dt.c | 224 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 7 files changed, 193 insertions(+), 1034 deletions(-) + delete mode 100644 hdm-dim2/dim2_hdm.h + delete mode 100644 hdm-dim2/platform/dim2_arwen_mlb3.c + delete mode 100644 hdm-dim2/platform/dim2_arwen_mlb6.c + delete mode 100644 hdm-dim2/platform/dim2_h2_dt.c + delete mode 100644 hdm-dim2/platform/dim2_mx6q.c + delete mode 100644 hdm-dim2/platform/dim2_mx6q_dt.c + +diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c +index e4629a5..2dba917 100644 +--- a/hdm-dim2/dim2_hdm.c ++++ b/hdm-dim2/dim2_hdm.c +@@ -14,6 +14,7 @@ + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + + #include ++#include + #include + #include + #include +@@ -21,13 +22,13 @@ + #include + #include + #include ++#include + #include + #include + #include + + #include + #include "dim2_hal.h" +-#include "dim2_hdm.h" + #include "dim2_errors.h" + #include "dim2_sysfs.h" + +@@ -93,6 +94,9 @@ struct dim2_hdm { + struct most_interface most_iface; + char name[16 + sizeof "dim2-"]; + void __iomem *io_base; ++ u8 clk_speed; ++ struct clk *clk; ++ struct clk *clk_pll; + struct task_struct *netinfo_task; + wait_queue_head_t netinfo_waitq; + int deliver_netinfo; +@@ -102,6 +106,12 @@ struct dim2_hdm { + struct medialb_bus bus; + void (*on_netinfo)(struct most_interface *, + unsigned char, unsigned char *); ++ void (*disable_platform)(struct platform_device *); ++}; ++ ++struct dim2_platform_data { ++ int (*enable)(struct platform_device *); ++ void (*disable)(struct platform_device *); + }; + + #define iface_to_hdm(iface) container_of(iface, struct dim2_hdm, most_iface) +@@ -686,6 +696,8 @@ static void dma_free(struct mbo *mbo, u32 size) + dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address); + } + ++static const struct of_device_id dim2_of_match[]; ++ + /* + * dim2_probe - dim2 probe handler + * @pdev: platform device structure +@@ -695,7 +707,7 @@ static void dma_free(struct mbo *mbo, u32 size) + */ + static int dim2_probe(struct platform_device *pdev) + { +- struct dim2_platform_data *pdata = pdev->dev.platform_data; ++ const struct dim2_platform_data *pdata; + struct dim2_hdm *dev; + struct resource *res; + int ret, i; +@@ -703,6 +715,8 @@ static int dim2_probe(struct platform_device *pdev) + u8 hal_ret; + int irq; + ++ enum { MLB_INT_IDX, AHB0_INT_IDX }; ++ + dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); + if (!dev) + return -ENOMEM; +@@ -710,29 +724,30 @@ static int dim2_probe(struct platform_device *pdev) + dev->atx_idx = -1; + + platform_set_drvdata(pdev, dev); ++ ++ dev->clk_speed = CLK_4096FS; ++ + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + dev->io_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(dev->io_base)) + return PTR_ERR(dev->io_base); + +- if (!pdata) { +- dev_err(&pdev->dev, "missing platform data\n"); +- return -EINVAL; +- } +- +- ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; ++ pdata = of_match_node(dim2_of_match, pdev->dev.of_node)->data; ++ ret = pdata && pdata->enable ? pdata->enable(pdev) : 0; + if (ret) + return ret; + ++ dev->disable_platform = pdata ? pdata->disable : 0; ++ + dev_info(&pdev->dev, "sync: num of frames per sub-buffer: %u\n", fcnt); +- hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); ++ hal_ret = dim_startup(dev->io_base, dev->clk_speed, fcnt); + if (hal_ret != DIM_NO_ERROR) { + dev_err(&pdev->dev, "dim_startup failed: %d\n", hal_ret); + ret = -ENODEV; +- goto err_bsp_destroy; ++ goto err_disable_platform; + } + +- irq = platform_get_irq(pdev, 0); ++ irq = platform_get_irq(pdev, AHB0_INT_IDX); + if (irq < 0) { + dev_err(&pdev->dev, "failed to get ahb0_int irq: %d\n", irq); + ret = irq; +@@ -746,7 +761,7 @@ static int dim2_probe(struct platform_device *pdev) + goto err_shutdown_dim; + } + +- irq = platform_get_irq(pdev, 1); ++ irq = platform_get_irq(pdev, MLB_INT_IDX); + if (irq < 0) { + dev_err(&pdev->dev, "failed to get mlb_int irq: %d\n", irq); + ret = irq; +@@ -832,9 +847,9 @@ static int dim2_probe(struct platform_device *pdev) + kthread_stop(dev->netinfo_task); + err_shutdown_dim: + dim_shutdown(); +-err_bsp_destroy: +- if (pdata && pdata->destroy) +- pdata->destroy(pdata); ++err_disable_platform: ++ if (dev->disable_platform) ++ dev->disable_platform(pdev); + + return ret; + } +@@ -848,7 +863,6 @@ static int dim2_probe(struct platform_device *pdev) + static int dim2_remove(struct platform_device *pdev) + { + struct dim2_hdm *dev = platform_get_drvdata(pdev); +- struct dim2_platform_data *pdata = pdev->dev.platform_data; + unsigned long flags; + + dim2_sysfs_destroy(&dev->bus); +@@ -859,37 +873,187 @@ static int dim2_remove(struct platform_device *pdev) + dim_shutdown(); + spin_unlock_irqrestore(&dim_lock, flags); + +- if (pdata && pdata->destroy) +- pdata->destroy(pdata); ++ if (dev->disable_platform) ++ dev->disable_platform(pdev); ++ ++ return 0; ++} ++ ++/* platform specific functions [[ */ ++ ++static int fsl_mx6_enable(struct platform_device *pdev) ++{ ++ struct dim2_hdm *dev = platform_get_drvdata(pdev); ++ int ret; ++ ++ dev->clk = devm_clk_get(&pdev->dev, "mlb"); ++ if (IS_ERR_OR_NULL(dev->clk)) { ++ dev_err(&pdev->dev, "unable to get mlb clock\n"); ++ return -EFAULT; ++ } ++ ++ ret = clk_prepare_enable(dev->clk); ++ if (ret) { ++ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); ++ return ret; ++ } ++ ++ if (dev->clk_speed >= CLK_2048FS) { ++ /* enable pll */ ++ dev->clk_pll = devm_clk_get(&pdev->dev, "pll8_mlb"); ++ if (IS_ERR_OR_NULL(dev->clk_pll)) { ++ dev_err(&pdev->dev, "unable to get mlb pll clock\n"); ++ clk_disable_unprepare(dev->clk); ++ return -EFAULT; ++ } ++ ++ writel(0x888, dev->io_base + 0x38); ++ clk_prepare_enable(dev->clk_pll); ++ } ++ ++ return 0; ++} ++ ++static void fsl_mx6_disable(struct platform_device *pdev) ++{ ++ struct dim2_hdm *dev = platform_get_drvdata(pdev); ++ ++ if (dev->clk_speed >= CLK_2048FS) ++ clk_disable_unprepare(dev->clk_pll); ++ ++ clk_disable_unprepare(dev->clk); ++} ++ ++static int rcar_h2_enable(struct platform_device *pdev) ++{ ++ struct dim2_hdm *dev = platform_get_drvdata(pdev); ++ int ret; ++ ++ dev->clk = devm_clk_get(&pdev->dev, NULL); ++ if (IS_ERR(dev->clk)) { ++ dev_err(&pdev->dev, "cannot get clock\n"); ++ return PTR_ERR(dev->clk); ++ } ++ ++ ret = clk_prepare_enable(dev->clk); ++ if (ret) { ++ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); ++ return ret; ++ } ++ ++ if (dev->clk_speed >= CLK_2048FS) { ++ /* enable MLP pll and LVDS drivers */ ++ writel(0x03, dev->io_base + 0x600); ++ /* set bias */ ++ writel(0x888, dev->io_base + 0x38); ++ } else { ++ /* PLL */ ++ writel(0x04, dev->io_base + 0x600); ++ } ++ + +- /* +- * break link to local platform_device_id struct +- * to prevent crash by unload platform device module +- */ +- pdev->id_entry = NULL; ++ /* BBCR = 0b11 */ ++ writel(0x03, dev->io_base + 0x500); ++ writel(0x0002FF02, dev->io_base + 0x508); + + return 0; + } + +-static const struct platform_device_id dim2_id[] = { +- { "medialb_dim2" }, +- { }, /* Terminating entry */ ++static void rcar_h2_disable(struct platform_device *pdev) ++{ ++ struct dim2_hdm *dev = platform_get_drvdata(pdev); ++ ++ clk_disable_unprepare(dev->clk); ++ ++ /* disable PLLs and LVDS drivers */ ++ writel(0x0, dev->io_base + 0x600); ++} ++ ++static int rcar_m3_enable(struct platform_device *pdev) ++{ ++ struct dim2_hdm *dev = platform_get_drvdata(pdev); ++ u32 enable_512fs = dev->clk_speed == CLK_512FS; ++ int ret; ++ ++ dev->clk = devm_clk_get(&pdev->dev, NULL); ++ if (IS_ERR(dev->clk)) { ++ dev_err(&pdev->dev, "cannot get clock\n"); ++ return PTR_ERR(dev->clk); ++ } ++ ++ ret = clk_prepare_enable(dev->clk); ++ if (ret) { ++ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); ++ return ret; ++ } ++ ++ /* PLL */ ++ writel(0x04, dev->io_base + 0x600); ++ ++ writel(enable_512fs, dev->io_base + 0x604); ++ ++ /* BBCR = 0b11 */ ++ writel(0x03, dev->io_base + 0x500); ++ writel(0x0002FF02, dev->io_base + 0x508); ++ ++ return 0; ++} ++ ++static void rcar_m3_disable(struct platform_device *pdev) ++{ ++ struct dim2_hdm *dev = platform_get_drvdata(pdev); ++ ++ clk_disable_unprepare(dev->clk); ++ ++ /* disable PLLs and LVDS drivers */ ++ writel(0x0, dev->io_base + 0x600); ++} ++ ++/* ]] platform specific functions */ ++ ++enum dim2_platforms { FSL_MX6, RCAR_H2, RCAR_M3 }; ++ ++static struct dim2_platform_data plat_data[] = { ++ [FSL_MX6] = { .enable = fsl_mx6_enable, .disable = fsl_mx6_disable }, ++ [RCAR_H2] = { .enable = rcar_h2_enable, .disable = rcar_h2_disable }, ++ [RCAR_M3] = { .enable = rcar_m3_enable, .disable = rcar_m3_disable }, ++}; ++ ++static const struct of_device_id dim2_of_match[] = { ++ { ++ .compatible = "fsl,imx6q-mlb150", ++ .data = plat_data + FSL_MX6 ++ }, ++ { ++ .compatible = "renesas,mlp", ++ .data = plat_data + RCAR_H2 ++ }, ++ { ++ .compatible = "rcar,medialb-dim2", ++ .data = plat_data + RCAR_M3 ++ }, ++ { ++ .compatible = "xlnx,axi4-os62420_3pin-1.00.a", ++ }, ++ { ++ .compatible = "xlnx,axi4-os62420_6pin-1.00.a", ++ }, ++ {}, + }; + +-MODULE_DEVICE_TABLE(platform, dim2_id); ++MODULE_DEVICE_TABLE(of, dim2_of_match); + + static struct platform_driver dim2_driver = { + .probe = dim2_probe, + .remove = dim2_remove, +- .id_table = dim2_id, + .driver = { + .name = "hdm_dim2", ++ .of_match_table = dim2_of_match, + }, + }; + + module_platform_driver(dim2_driver); + +-MODULE_AUTHOR("Jain Roy Ambi "); + MODULE_AUTHOR("Andrey Shvetsov "); + MODULE_DESCRIPTION("MediaLB DIM2 Hardware Dependent Module"); + MODULE_LICENSE("GPL"); +libgit2 0.26.0 diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch b/meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch new file mode 100644 index 000000000..1b01fb156 --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch @@ -0,0 +1,92 @@ +From 839ad403a2d8081a6c15f6fc2836b01919338f3c Mon Sep 17 00:00:00 2001 +From: Andrey Shvetsov +Date: Mon, 12 Feb 2018 12:24:37 +0100 +Subject: [PATCH] staging: most: dim2: read clock speed from the device tree + +This implements reading of the clock speed parameter from the device +tree. + +Signed-off-by: Andrey Shvetsov +--- + Documentation/devicetree/bindings/inic/microchip,inic-dim2.txt | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + hdm-dim2/dim2_hdm.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 113 insertions(+), 1 deletion(-) + create mode 100644 Documentation/devicetree/bindings/inic/microchip,inic-dim2.txt + +diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c +index 2dba917..05e1896 100644 +--- a/hdm-dim2/dim2_hdm.c ++++ b/hdm-dim2/dim2_hdm.c +@@ -698,6 +698,42 @@ static void dma_free(struct mbo *mbo, u32 size) + + static const struct of_device_id dim2_of_match[]; + ++static struct { ++ const char *clock_speed; ++ u8 clk_speed; ++} clk_mt[] = { ++ { "256fs", CLK_256FS }, ++ { "512fs", CLK_512FS }, ++ { "1024fs", CLK_1024FS }, ++ { "2048fs", CLK_2048FS }, ++ { "3072fs", CLK_3072FS }, ++ { "4096fs", CLK_4096FS }, ++ { "6144fs", CLK_6144FS }, ++ { "8192fs", CLK_8192FS }, ++}; ++ ++/** ++ * get_dim2_clk_speed - converts string to DIM2 clock speed value ++ * ++ * @clock_speed: string in the format "{NUMBER}fs" ++ * @val: pointer to get one of the CLK_{NUMBER}FS values ++ * ++ * By success stores one of the CLK_{NUMBER}FS in the *val and returns 0, ++ * otherwise returns -EINVAL. ++ */ ++static int get_dim2_clk_speed(const char *clock_speed, u8 *val) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(clk_mt); i++) { ++ if (!strcmp(clock_speed, clk_mt[i].clock_speed)) { ++ *val = clk_mt[i].clk_speed; ++ return 0; ++ } ++ } ++ return -EINVAL; ++} ++ + /* + * dim2_probe - dim2 probe handler + * @pdev: platform device structure +@@ -708,6 +744,7 @@ static const struct of_device_id dim2_of_match[]; + static int dim2_probe(struct platform_device *pdev) + { + const struct dim2_platform_data *pdata; ++ const char *clock_speed; + struct dim2_hdm *dev; + struct resource *res; + int ret, i; +@@ -725,7 +762,18 @@ static int dim2_probe(struct platform_device *pdev) + + platform_set_drvdata(pdev, dev); + +- dev->clk_speed = CLK_4096FS; ++ ret = of_property_read_string(pdev->dev.of_node, ++ "microchip,clock-speed", &clock_speed); ++ if (ret) { ++ dev_err(&pdev->dev, "missing dt property clock-speed\n"); ++ return ret; ++ } ++ ++ ret = get_dim2_clk_speed(clock_speed, &dev->clk_speed); ++ if (ret) { ++ dev_err(&pdev->dev, "bad dt property clock-speed\n"); ++ return ret; ++ } + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + dev->io_base = devm_ioremap_resource(&pdev->dev, res); +-- +libgit2 0.26.0 diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch b/meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch new file mode 100644 index 000000000..08cd6f99d --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch @@ -0,0 +1,47 @@ +From 756f2f1f90524c2620ed7951e436d13bdb929a6b Mon Sep 17 00:00:00 2001 +From: Andrey Shvetsov +Date: Mon, 12 Feb 2018 12:25:37 +0100 +Subject: [PATCH] staging: most: dim2: use device for coherent memory allocation + +On several modern architectures the allocation of coherent memory needs +a device that has the dma_ops properly set. This patch enables use of +the DIM2 platform device for the allocation process. + +Signed-off-by: Andrey Shvetsov +--- + hdm-dim2/dim2_hdm.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c +index 05e1896..1847091 100644 +--- a/hdm-dim2/dim2_hdm.c ++++ b/hdm-dim2/dim2_hdm.c +@@ -688,12 +688,16 @@ static int poison_channel(struct most_interface *most_iface, int ch_idx) + + static void *dma_alloc(struct mbo *mbo, u32 size) + { +- return dma_alloc_coherent(NULL, size, &mbo->bus_address, GFP_KERNEL); ++ struct device *dev = mbo->ifp->dev; ++ ++ return dma_alloc_coherent(dev, size, &mbo->bus_address, GFP_KERNEL); + } + + static void dma_free(struct mbo *mbo, u32 size) + { +- dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address); ++ struct device *dev = mbo->ifp->dev; ++ ++ dma_free_coherent(dev, size, mbo->virt_address, mbo->bus_address); + } + + static const struct of_device_id dim2_of_match[]; +@@ -875,6 +879,7 @@ static int dim2_probe(struct platform_device *pdev) + dev->most_iface.poison_channel = poison_channel; + dev->most_iface.request_netinfo = request_netinfo; + dev->most_iface.extra_attrs = DBR_ATTRS; ++ dev->most_iface.dev = &pdev->dev; + + kobj = most_register_interface(&dev->most_iface); + if (IS_ERR(kobj)) { +-- +libgit2 0.26.0 diff --git a/meta-agl-profile-core/recipes-kernel/most/most.bb b/meta-agl-profile-core/recipes-kernel/most/most.bb new file mode 100644 index 000000000..222c8aa18 --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/most.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "Build MOST driver" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +PV = "0.1" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/most;protocol=https;branch=${AGL_BRANCH}" + +S = "${WORKDIR}/git/driver" +SRCREV = "794e6dc552e626eb6dd506baf941873414d9ef73" + +KERNEL_MODULE_AUTOLOAD += "aim_cdev aim_sound aim_network aim_v4l2 hdm_i2c hdm_dim2 hdm_usb mostcore" \ No newline at end of file diff --git a/meta-agl-profile-core/recipes-kernel/most/most.bbappend b/meta-agl-profile-core/recipes-kernel/most/most.bbappend new file mode 100644 index 000000000..d85565fc2 --- /dev/null +++ b/meta-agl-profile-core/recipes-kernel/most/most.bbappend @@ -0,0 +1,12 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +SRC_URI_append = " \ + file://0002-src-most-add-auto-conf-feature.patch \ + file://0003-core-remove-kernel-log-for-MBO-status.patch \ + file://0004-most-video-set-device_caps.patch \ + file://0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch \ + file://0006-dim2-fix-startup-sequence.patch \ + file://0007-dim2-use-device-tree.patch \ + file://0008-dim2-read-clock-speed-from-the-device-tree.patch \ + file://0009-dim2-use-device-for-coherent-memory-allocation.patch \ + " diff --git a/meta-agl-profile-core/recipes-multimedia/pulseaudio/pulseaudio/10-unload-modules.pa b/meta-agl-profile-core/recipes-multimedia/pulseaudio/pulseaudio/10-unload-modules.pa new file mode 100644 index 000000000..1f8b723e2 --- /dev/null +++ b/meta-agl-profile-core/recipes-multimedia/pulseaudio/pulseaudio/10-unload-modules.pa @@ -0,0 +1,4 @@ +unload-module module-role-cork +unload-module module-device-restore +unload-module module-stream-restore +unload-module module-card-restore diff --git a/meta-agl-profile-core/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend b/meta-agl-profile-core/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend index a54ec60f1..7eebe306d 100644 --- a/meta-agl-profile-core/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend +++ b/meta-agl-profile-core/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend @@ -1,7 +1,19 @@ FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" + +SRC_URI += "file://10-unload-modules.pa" + inherit systemd + +# Add .include directive to default.pa so optional configuration can be added +do_install_append () { + echo ".include ${sysconfdir}/pulse/default.d" >> ${D}${sysconfdir}/pulse/default.pa + install -d ${D}${sysconfdir}/pulse/default.d + install -m 0644 ${WORKDIR}/10-unload-modules.pa ${D}${sysconfdir}/pulse/default.d/ +} + + do_install_append() { # Install pulseaudio systemd service if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then @@ -26,3 +38,4 @@ FILES_${PN}-server += " \ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/pulseaudio.service', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/default.target.wants/pulseaudio.service', '', d)} \ " + diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-boot.bb b/meta-agl-profile-core/recipes-platform/images/agl-image-boot.bb new file mode 100644 index 000000000..84cdbcf31 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/images/agl-image-boot.bb @@ -0,0 +1,9 @@ +SUMMARY = "An AGL small image just capable of allowing a device to boot." + +require agl-image-boot.inc + +LICENSE = "MIT" + +IMAGE_INSTALL_append = "\ + packagegroup-agl-image-boot \ + " diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-boot.inc b/meta-agl-profile-core/recipes-platform/images/agl-image-boot.inc new file mode 100644 index 000000000..825393978 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/images/agl-image-boot.inc @@ -0,0 +1,10 @@ +IMAGE_LINGUAS = " " + +inherit core-image + +IMAGE_INSTALL = "${CORE_IMAGE_EXTRA_INSTALL}" + +IMAGE_ROOTFS_SIZE ?= "8192" + +# Allow extra IMAGE_FSTYPES to be added by boards configs +IMAGE_FSTYPES += "${AGL_EXTRA_IMAGE_FSTYPES}" diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.bb b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.bb new file mode 100755 index 000000000..164e1e9f5 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.bb @@ -0,0 +1,20 @@ +SUMMARY = "Cross SDK of Full AGL Distribution for core profile" + +DESCRIPTION = "SDK image for full AGL Distribution for IVI profile. \ +It includes the full meta-toolchain, plus developement headers and libraries \ +to form a standalone cross SDK." + +require agl-image-minimal.bb + +LICENSE = "MIT" + +IMAGE_FEATURES_append = " dev-pkgs" +IMAGE_INSTALL_append = " kernel-dev kernel-devsrc" + +inherit populate_sdk + +# Task do_populate_sdk and do_rootfs can't be exec simultaneously. +# Both exec "createrepo" on the same directory, and so one of them +# can failed (randomly). +addtask do_populate_sdk after do_rootfs + diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-qa.bb b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-qa.bb new file mode 100644 index 000000000..b162f2904 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-qa.bb @@ -0,0 +1,12 @@ +SUMMARY = "An AGL small image just capable of allowing a device to boot and run tests." + +DESCRIPTION = "A minimal set of AGL Distribution. This image also has additional \ +packages (e.g. commandline tools) for Quality Assurance(QA)." + +require agl-image-minimal.bb + +LICENSE = "MIT" + +IMAGE_INSTALL_append = " \ + packagegroup-ivi-common-test \ + " diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.bb b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.bb new file mode 100644 index 000000000..1fd213d0f --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.bb @@ -0,0 +1,9 @@ +SUMMARY = "An AGL small image just capable of allowing a device to boot." + +require agl-image-minimal.inc + +LICENSE = "MIT" + +IMAGE_INSTALL_append = "\ + packagegroup-agl-image-minimal \ + " diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.inc b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.inc new file mode 100644 index 000000000..825393978 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.inc @@ -0,0 +1,10 @@ +IMAGE_LINGUAS = " " + +inherit core-image + +IMAGE_INSTALL = "${CORE_IMAGE_EXTRA_INSTALL}" + +IMAGE_ROOTFS_SIZE ?= "8192" + +# Allow extra IMAGE_FSTYPES to be added by boards configs +IMAGE_FSTYPES += "${AGL_EXTRA_IMAGE_FSTYPES}" diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb new file mode 100644 index 000000000..c9d679879 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb @@ -0,0 +1,50 @@ +# +# Copyright (C) 2007 OpenedHand Ltd. +# +# derived from oe-core: meta/recipes-core/packagegroups/packagegroup-core-boot.bb + +SUMMARY = "Minimal boot requirements" +DESCRIPTION = "The minimal set of packages required to boot the system" +LICENSE = "MIT" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit packagegroup + +# +# Set by the machine configuration with packages essential for device bootup +# +MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= "" +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= "" + +# Distro can override the following VIRTUAL-RUNTIME providers: +VIRTUAL-RUNTIME_dev_manager ?= "udev" +VIRTUAL-RUNTIME_login_manager ?= "busybox" +VIRTUAL-RUNTIME_init_manager ?= "sysvinit" +VIRTUAL-RUNTIME_initscripts ?= "initscripts" +VIRTUAL-RUNTIME_keymaps ?= "keymaps" + +SYSVINIT_SCRIPTS = "${@bb.utils.contains('MACHINE_FEATURES', 'rtc', 'busybox-hwclock', '', d)} \ + modutils-initscripts \ + init-ifupdown \ + ${VIRTUAL-RUNTIME_initscripts} \ + " + +RDEPENDS_${PN} = "\ + base-files \ + base-passwd \ + busybox \ + run-agl-postinsts \ + ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "${SYSVINIT_SCRIPTS}", "", d)} \ + ${@bb.utils.contains("MACHINE_FEATURES", "keyboard", "${VIRTUAL-RUNTIME_keymaps}", "", d)} \ + netbase \ + ${VIRTUAL-RUNTIME_login_manager} \ + ${VIRTUAL-RUNTIME_init_manager} \ + ${VIRTUAL-RUNTIME_dev_manager} \ + ${VIRTUAL-RUNTIME_update-alternatives} \ + ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}" + +RRECOMMENDS_${PN} = "\ + tzdata \ + ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}" + diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb new file mode 100644 index 000000000..38d44995c --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb @@ -0,0 +1,16 @@ +DESCRIPTION = "The minimal set of packages for Connectivity Subsystem" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-core-connectivity \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + dhcp-server \ + ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','connman','connman connman-client connman-tests connman-tools connman-ncurses','',d)} \ + rtl-sdr \ + " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-multimedia.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-multimedia.bb new file mode 100644 index 000000000..a56aa5070 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-multimedia.bb @@ -0,0 +1,27 @@ +SUMMARY = "The software for application framework of AGL IVI profile" +DESCRIPTION = "A set of packages belong to AGL application framework which required by \ +Multimedia Subsystem" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-core-multimedia \ + " + +RDEPENDS_${PN} += "\ + ${@bb.utils.contains('DISTRO_FEATURES', 'agl-audio-4a-framework', '' , 'agl-audio-plugin', d)} \ + alsa-utils \ + pulseaudio-server \ + pulseaudio-misc \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '\ + pulseaudio-module-bluetooth-discover \ + pulseaudio-module-bluetooth-policy \ + pulseaudio-module-bluez5-discover \ + pulseaudio-module-bluez5-device \ + pulseaudio-module-switch-on-connect \ + pulseaudio-module-loopback \ + ','', d)} \ + gstreamer1.0-meta-base \ + " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-navigation.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-navigation.bb new file mode 100644 index 000000000..daebe4bde --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-navigation.bb @@ -0,0 +1,16 @@ +SUMMARY = "The software for application framework of AGL IVI profile" +DESCRIPTION = "A set of packages belong to AGL application framework which required by \ +Navigation and Location-Based Services Subsystem" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-core-navigation \ + " + +RDEPENDS_${PN} += "\ + gpsd \ + geoclue \ + " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb new file mode 100644 index 000000000..aef732838 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb @@ -0,0 +1,14 @@ +SUMMARY = "The packages of middlewares for AGL IVI profile" +DESCRIPTION = "The set of packages required by Operating System and Common libraries Subsystem" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-core-os-commonlibs \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb new file mode 100644 index 000000000..0ae5c77a3 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb @@ -0,0 +1,14 @@ +SUMMARY = "The packages of middlewares for AGL IVI profile" +DESCRIPTION = "The set of packages required by Operating System and Common libraries Subsystem" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-core-security \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb new file mode 100644 index 000000000..f5a53461a --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb @@ -0,0 +1,30 @@ +DESCRIPTION = "The minimal set of packages for Connectivity Subsystem" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-core-services \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ +agl-service-bluetooth \ +agl-service-can-low-level \ +agl-service-data-persistence \ +agl-service-geoclue \ +agl-service-geofence \ +agl-service-gps \ +agl-service-identity-agent \ +agl-service-mediascanner \ +agl-service-navigation \ +agl-service-nfc \ +agl-service-radio \ +agl-service-signal-composer \ +agl-service-steering-wheel \ +agl-service-unicens \ +agl-service-weather \ +agl-service-wifi \ +high-level-viwi-service \ + " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb new file mode 100644 index 000000000..ba7ccdd00 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb @@ -0,0 +1,18 @@ +DESCRIPTION = "The minimal set of packages required by AGL" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-image-boot \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-core-boot \ + " + + +RDEPENDS_${PN} += "\ + " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb new file mode 100644 index 000000000..027cf6b23 --- /dev/null +++ b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb @@ -0,0 +1,27 @@ +DESCRIPTION = "The minimal set of packages required by AGL" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-image-minimal \ + profile-agl-minimal \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-core-boot \ + " + + +RDEPENDS_${PN} += "\ + packagegroup-agl-core-connectivity \ + packagegroup-agl-core-navigation \ + packagegroup-agl-core-multimedia \ + packagegroup-agl-core-os-commonlibs \ + packagegroup-agl-core-services \ + packagegroup-agl-core-security \ + " + +RDEPENDS_profile-agl-minimal = "${PN}" diff --git a/meta-agl-profile-demo/conf/layer.conf b/meta-agl-profile-demo/conf/layer.conf deleted file mode 100644 index bf7347e58..000000000 --- a/meta-agl-profile-demo/conf/layer.conf +++ /dev/null @@ -1,10 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "aglprofiledemo" -BBFILE_PATTERN_aglprofiledemo = "^${LAYERDIR}/" -BBFILE_PRIORITY_aglprofiledemo = "70" diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-agl.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-agl.bb deleted file mode 100644 index cc923fd4a..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-agl.bb +++ /dev/null @@ -1,16 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -AGL App Fw Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-agl \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-automotive.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-automotive.bb deleted file mode 100644 index 333195b74..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-automotive.bb +++ /dev/null @@ -1,16 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Automotive Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-automotive \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-connectivity.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-connectivity.bb deleted file mode 100644 index fa45c97d6..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-connectivity.bb +++ /dev/null @@ -1,28 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Connectivity Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-connectivity \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " - -AGL_APPS = " \ - " -# restricted due to dependency on Kernel >= 4.8 which is not available in all repositories -AGL_APPS_append_m3ulcb = " agl-service-can-low-level " -AGL_APPS_append_intel-corei7-64 = " agl-service-can-low-level " -AGL_APPS_append_qemux86-64 = " agl-service-can-low-level " - -RDEPENDS_${PN}_append = " \ - ${AGL_APPS} \ - " - diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-graphics.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-graphics.bb deleted file mode 100644 index 1e707ce46..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-graphics.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Graphics Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-graphics \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - opencv \ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-multimedia.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-multimedia.bb deleted file mode 100644 index ed395f4f0..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-multimedia.bb +++ /dev/null @@ -1,15 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Multimedia Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-multimedia \ - " - -RDEPENDS_${PN} += "\ - agl-service-mediaplayer \ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb deleted file mode 100644 index a31c666ca..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Native App Fw Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-native \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-appfw-native-qt5 \ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-navi-lbs.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-navi-lbs.bb deleted file mode 100644 index 3e5c9b396..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-navi-lbs.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Navigation and Location-Based Services Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-navi-lbs \ - " - -RDEPENDS_${PN} += "\ - agl-service-gps \ - agl-service-geoclue \ - agl-service-geofence \ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-security.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-security.bb deleted file mode 100644 index 3806899da..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-security.bb +++ /dev/null @@ -1,16 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Security Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-security \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-speech-services.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-speech-services.bb deleted file mode 100644 index 5f716c21e..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-speech-services.bb +++ /dev/null @@ -1,16 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Speech Services Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-speech-services \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-web.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-web.bb deleted file mode 100644 index 6da656573..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw-web.bb +++ /dev/null @@ -1,16 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework which required by \ -Web App Fw Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-web \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw.bb b/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw.bb deleted file mode 100644 index cb5636bfd..000000000 --- a/meta-agl-profile-demo/recipes-appfw/packagegroups/packagegroup-agl-appfw.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "The software for application framework of AGL IVI profile" -DESCRIPTION = "A set of packages belong to AGL application framework" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-appfw-automotive \ - packagegroup-agl-appfw-connectivity \ - packagegroup-agl-appfw-graphics \ - packagegroup-agl-appfw-multimedia \ - packagegroup-agl-appfw-navi-lbs \ - packagegroup-agl-appfw-agl \ - packagegroup-agl-appfw-native \ - packagegroup-agl-appfw-web \ - packagegroup-agl-appfw-security \ - packagegroup-agl-appfw-speech-services \ - " diff --git a/meta-agl-profile-demo/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb b/meta-agl-profile-demo/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb deleted file mode 100644 index 6379ec38f..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb +++ /dev/null @@ -1,38 +0,0 @@ -SUMMARY = "Bluetooth Audio ALSA Backend" -HOMEPAGE = "https://github.com/Arkq/bluez-alsa" -SECTION = "libs" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=bb3e99e80c5d718213f35ae1def4c106" - -SRC_URI = "git://github.com/Arkq/bluez-alsa.git;protocol=https;branch=master" -SRCREV = "9045edb436ea755f395a2e09e4525b5defad286a" - -SRC_URI += "file://bluez-alsa.service" - -S = "${WORKDIR}/git" - -DEPENDS += "alsa-lib bluez5 systemd glib-2.0 sbc" - -PACKAGECONFIG[aac] = "--enable-aac, --disable-aac, " -PACKAGECONFIG[aptx] = "--enable-aptx,--disable-aptx," -PACKAGECONFIG[hcitop] = "--enable-hcitop, --disable-hcitop, libbsd ncurses" - -inherit autotools pkgconfig -inherit systemd - -SYSTEMD_AUTO_ENABLE = "enable" -SYSTEMD_SERVICE_${PN} = "bluez-alsa.service" - -PACKAGECONFIG += "hcitop" - -do_install_append () { - install -d ${D}${base_libdir}/systemd/system - install -m 0644 ${WORKDIR}/bluez-alsa.service ${D}${base_libdir}/systemd/system -} - -FILES_${PN} += "\ - ${datadir}/alsa/alsa.conf.d/20-bluealsa.conf\ - ${libdir}/alsa-lib/libasound_module_ctl_bluealsa.so\ - ${libdir}/alsa-lib/libasound_module_pcm_bluealsa.so\ -" diff --git a/meta-agl-profile-demo/recipes-connectivity/bluez-alsa/files/bluez-alsa.service b/meta-agl-profile-demo/recipes-connectivity/bluez-alsa/files/bluez-alsa.service deleted file mode 100644 index 671815e03..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/bluez-alsa/files/bluez-alsa.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Bluetooth Audio ALSA Backend -After=bluetooth.service -Requires=bluetooth.service - -[Service] -Type=simple -ExecStart=/usr/bin/bluealsa - -[Install] -WantedBy=multi-user.target diff --git a/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5/0001_fix_compile_issue_when_using_in_c++.patch b/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5/0001_fix_compile_issue_when_using_in_c++.patch deleted file mode 100644 index ba2f33c62..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5/0001_fix_compile_issue_when_using_in_c++.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -urN bluez-5.22.orig/lib/bluetooth.h bluez-5.22/lib/bluetooth.h ---- bluez-5.22.orig/lib/bluetooth.h 2013-12-10 15:59:06.000000000 +0900 -+++ bluez-5.22/lib/bluetooth.h 2015-10-28 13:34:25.749335768 +0900 -@@ -158,16 +158,16 @@ - #define bt_get_unaligned(ptr) \ - ({ \ - struct __attribute__((packed)) { \ -- typeof(*(ptr)) __v; \ -- } *__p = (typeof(__p)) (ptr); \ -+ __typeof__(*(ptr)) __v; \ -+ } *__p = (__typeof__(__p)) (ptr); \ - __p->__v; \ - }) - - #define bt_put_unaligned(val, ptr) \ - do { \ - struct __attribute__((packed)) { \ -- typeof(*(ptr)) __v; \ -- } *__p = (typeof(__p)) (ptr); \ -+ __typeof__(*(ptr)) __v; \ -+ } *__p = (__typeof__(__p)) (ptr); \ - __p->__v = (val); \ - } while(0) diff --git a/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5/bluetooth.conf b/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5/bluetooth.conf deleted file mode 100644 index 1f2762de7..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5/bluetooth.conf +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5_%.bbappend b/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5_%.bbappend deleted file mode 100644 index c5afa875f..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/bluez5/bluez5_%.bbappend +++ /dev/null @@ -1,13 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" -SRC_URI_append = " file://bluetooth.conf" - -APPLY_v522 = "${@str('no' if '${PV}' != '5.22' else 'yes')}" - -SRC_URI_append = "\ - file://0001_fix_compile_issue_when_using_in_c++.patch;apply=${APPLY_v522} \ -" - - -do_install_append() { - install -m 0644 ${WORKDIR}/bluetooth.conf ${D}${sysconfdir}/dbus-1/system.d/bluetooth.conf -} diff --git a/meta-agl-profile-demo/recipes-connectivity/busybox/busybox_%.bbappend b/meta-agl-profile-demo/recipes-connectivity/busybox/busybox_%.bbappend deleted file mode 100644 index 198b651dd..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/busybox/busybox_%.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -SRC_URI += "file://enable-wget-https.cfg" -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" diff --git a/meta-agl-profile-demo/recipes-connectivity/busybox/files/enable-wget-https.cfg b/meta-agl-profile-demo/recipes-connectivity/busybox/files/enable-wget-https.cfg deleted file mode 100644 index e92006bef..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/busybox/files/enable-wget-https.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Thu Jun 8 17:32:07 2017 -CONFIG_FEATURE_WGET_OPENSSL=y -CONFIG_FEATURE_WGET_SSL_HELPER=y diff --git a/meta-agl-profile-demo/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb b/meta-agl-profile-demo/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb deleted file mode 100644 index 02afef75f..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "A simple ncurses interface for connman" -DESCRIPTION = "A simple ncurses interface for connman" -HOMEPAGE = "https://gitlab.com/iotbzh/connman-json-client" - -SECTION = "console/network" - -DEPENDS = "dbus ncurses connman json-c" - -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381" - -SRC_URI = "git://gitlab.com/iotbzh/connman-json-client.git;protocol=https;rev=ad4261a2f87c914667b1f6841c913f6b08d373e2" - -inherit autotools pkgconfig - -EXTRA_AUTORECONF += " -i" -EXTRA_OECONF += " --disable-optimization --enable-debug" - -S = "${WORKDIR}/git" - -do_install () { - install -dm755 ${D}${bindir} - install -Dm755 connman_ncurses ${D}${bindir} -} - -FILES_${PN} = "${bindir}/connman_ncurses" diff --git a/meta-agl-profile-demo/recipes-connectivity/connman/.appends.core b/meta-agl-profile-demo/recipes-connectivity/connman/.appends.core deleted file mode 100644 index e69de29bb..000000000 diff --git a/meta-agl-profile-demo/recipes-connectivity/connman/connman_%.bbappend b/meta-agl-profile-demo/recipes-connectivity/connman/connman_%.bbappend deleted file mode 100644 index e41cbe954..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/connman/connman_%.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI += "file://0001-disable-when-booting-over-nfs.patch" diff --git a/meta-agl-profile-demo/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch b/meta-agl-profile-demo/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch deleted file mode 100644 index 95fc0a905..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/connman.service.in 2016-08-15 13:51:03.479478140 +0200 -+++ b/src/connman.service.in 2016-08-15 13:51:33.469478267 +0200 -@@ -7,6 +7,7 @@ RequiresMountsFor=@localstatedir@/lib/co - After=dbus.service network-pre.target systemd-sysusers.service - Before=network.target multi-user.target shutdown.target - Wants=network.target - Conflicts=systemd-resolved.service -+ConditionKernelCommandLine=!root=/dev/nfs - - [Service] - Type=dbus diff --git a/meta-agl-profile-demo/recipes-connectivity/libnfc/libnfc_git.bb b/meta-agl-profile-demo/recipes-connectivity/libnfc/libnfc_git.bb deleted file mode 100644 index bd216f815..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/libnfc/libnfc_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "libnfc" -DESCRIPTION = "Platform independent Near Field Communication (NFC) library" -HOMEPAGE = "https://github.com/nfc-tools/libnfc" -SECTION = "apps" - -DEPENDS = "libusb" - -LICENSE = "LGPLv3" -LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=b52f2d57d10c4f7ee67a7eb9615d5d24" - -inherit cmake pkgconfig - -SRC_URI = "git://github.com/nfc-tools/libnfc;protocol=https;branch=master" -SRCREV = "2d4543673e9b76c02679ca8b89259659f1afd932" - -PV = "1.7.1+git${SRCPV}" -S = "${WORKDIR}/git" - diff --git a/meta-agl-profile-demo/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch b/meta-agl-profile-demo/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch deleted file mode 100644 index 86b7392df..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 3aeaf8054fcb2617ca8f6196ca32be3e69337f77 Mon Sep 17 00:00:00 2001 -From: Martin Kelly -Date: Fri, 21 Apr 2017 10:29:19 -0700 -Subject: [PATCH] remove -I/usr/include in pkg-config - -This shouldn't be necessary as it's part of the default compiler include -paths anyway. Morever, it can cause GCC 6 C++ build failures in -downstream packages when combined with QMake (such as -qtmultimedia-rtlfm-radio-plugin). - -Fix these issues by removing it. - -Upstream-Status: Inappropriate [disable-feature] - -This patch should not go upstream because it breaks the ability to build -with --prefix. That's not a problem for Openembedded, but it is for -upstream more generally. See this mail thread for more information: - -http://lists.osmocom.org/pipermail/osmocom-sdr/2017-April/001580.html - -Signed-off-by: Martin Kelly ---- - librtlsdr.pc.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/librtlsdr.pc.in b/librtlsdr.pc.in -index 5e55049..84b6d0c 100644 ---- a/librtlsdr.pc.in -+++ b/librtlsdr.pc.in -@@ -6,6 +6,6 @@ includedir=@includedir@ - Name: RTL-SDR Library - Description: C Utility Library - Version: @VERSION@ --Cflags: -I${includedir}/ @RTLSDR_PC_CFLAGS@ -+Cflags: @RTLSDR_PC_CFLAGS@ - Libs: -L${libdir} -lrtlsdr -lusb-1.0 - Libs.private: @RTLSDR_PC_LIBS@ --- -2.1.4 - diff --git a/meta-agl-profile-demo/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb b/meta-agl-profile-demo/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb deleted file mode 100644 index 7d5c0217d..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "Turns a Realtek RTL2832U-based DVB dongle into a SDR receiver" -DESCRIPTION = "DVB-T dongles based on the Realtek RTL2832U chipset can be used as Software Digital Radio adapters, since the chip allows transferring raw I/Q samples to the host, which is really used for DAB/DAB+/FM demodulation." -HOMEPAGE = "http://sdr.osmocom.org/trac/wiki/rtl-sdr" - -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \ - file://src/librtlsdr.c;endline=18;md5=1b05599c3ebd4d74857a0a7c45f3d4ef" - -DEPENDS = "libusb1" - -SRC_URI = "git://git.osmocom.org/rtl-sdr \ - file://0001-remove-I-usr-include-in-pkg-config.patch \ - " -SRCREV = "e3c03f738f5aef4dc51e2b741fbdb542b9cc1bb1" -S = "${WORKDIR}/git" - -inherit autotools pkgconfig - -EXTRA_OECONF = "--enable-driver-detach" -#CFLAGS_remove = " -do_configure_append() { - # remove included temporary path from pc file due to pass-through of OE CFLAGS - # debug-prefix-map - # See: http://lists.openembedded.org/pipermail/openembedded-devel/2016-May/107456.html - sed -i -e "s# -fdebug-prefix-map=.*##g" librtlsdr.pc -} \ No newline at end of file diff --git a/meta-agl-profile-demo/recipes-connectivity/rygel/.appends.meta-multimedia b/meta-agl-profile-demo/recipes-connectivity/rygel/.appends.meta-multimedia deleted file mode 100644 index e69de29bb..000000000 diff --git a/meta-agl-profile-demo/recipes-connectivity/rygel/files/0001-Fix-missing-link-to-unistring-for-lms-plugin.patch b/meta-agl-profile-demo/recipes-connectivity/rygel/files/0001-Fix-missing-link-to-unistring-for-lms-plugin.patch deleted file mode 100644 index 57b97a6ca..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/rygel/files/0001-Fix-missing-link-to-unistring-for-lms-plugin.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 10602ca53b1c1231e96d8d446904617528c11dae Mon Sep 17 00:00:00 2001 -From: Ronan Le Martret -Date: Mon, 13 Mar 2017 15:31:41 +0100 -Subject: [PATCH] Fix missing link to unistring for lms plugin - -Signed-off-by: Ronan Le Martret ---- - configure.ac | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/configure.ac b/configure.ac -index c5cbc00..2f7dc78 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -248,6 +248,10 @@ AS_IF([test "x$enable_lms_plugin" = "xyes"], - gio-2.0 >= $GIO_REQUIRED - sqlite3 >= $LIBSQLITE3_REQUIRED]) - RYGEL_PLUGIN_LMS_DEPS_VALAFLAGS="$RYGEL_COMMON_MODULES_VALAFLAGS --pkg gio-2.0 --pkg gee-0.8 --pkg sqlite3" -+ AS_IF([test "x$have_unistring" = "xyes"], -+ [ -+ RYGEL_PLUGIN_LMS_DEPS_LIBS="$RYGEL_PLUGIN_LMS_DEPS_LIBS -lunistring" -+ ]) - AC_SUBST([RYGEL_PLUGIN_LMS_DEPS_VALAFLAGS]) - ]) - --- -2.6.6 - diff --git a/meta-agl-profile-demo/recipes-connectivity/rygel/files/rygel.service b/meta-agl-profile-demo/recipes-connectivity/rygel/files/rygel.service deleted file mode 100644 index fb94d7160..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/rygel/files/rygel.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Rygel -After=lightmediascanner.service -Requires=lightmediascanner.service - -[Service] -Type=dbus -BusName=org.gnome.Rygel1 -ExecStart=/usr/bin/rygel -c /etc/rygel.conf - -[Install] -WantedBy=default.target -Alias=dbus-org.gnome.Rygel1.service diff --git a/meta-agl-profile-demo/recipes-connectivity/rygel/rygel_%.bbappend b/meta-agl-profile-demo/recipes-connectivity/rygel/rygel_%.bbappend deleted file mode 100644 index 4ae59259f..000000000 --- a/meta-agl-profile-demo/recipes-connectivity/rygel/rygel_%.bbappend +++ /dev/null @@ -1,25 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -# Disable everything but the media-export plugin, add the lms plugin -PACKAGECONFIG = "media-export lms" -PACKAGECONFIG[lms] = "--enable-lms-plugin,--disable-lms-plugin,sqlite3" - -# LightMediaScanner plugin patches -SRC_URI += "\ - file://0001-Fix-missing-link-to-unistring-for-lms-plugin.patch \ - file://rygel.service \ -" - -do_install_prepend() { - # Install rygel systemd service - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - install -m 644 -p -D ${WORKDIR}/rygel.service ${D}${systemd_user_unitdir}/rygel.service - - # Execute these manually on behalf of systemctl script (from systemd-systemctl-native.bb) - # because it does not support systemd's user mode. - # However, systemctl --global should be checked - #mkdir -p ${D}/etc/systemd/user/default.target.wants/ - #ln -sf ${systemd_user_unitdir}/rygel.service ${D}/etc/systemd/user/dbus-org.gnome.Rygel1.service - #ln -sf ${systemd_user_unitdir}/rygel.service ${D}/etc/systemd/user/default.target.wants/rygel.service - fi -} diff --git a/meta-agl-profile-demo/recipes-core/packagegroups/packagegroup-ivi-common-core-multimedia.bb b/meta-agl-profile-demo/recipes-core/packagegroups/packagegroup-ivi-common-core-multimedia.bb deleted file mode 100644 index abe6786f2..000000000 --- a/meta-agl-profile-demo/recipes-core/packagegroups/packagegroup-ivi-common-core-multimedia.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Multimedia Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-ivi-common-core-multimedia \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - " diff --git a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0001-Fix-build-with-systemd-209.patch b/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0001-Fix-build-with-systemd-209.patch deleted file mode 100644 index 5bf6bf88e..000000000 --- a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0001-Fix-build-with-systemd-209.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 8080b7395c1638baee60fb3c46667f21e00b87fb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Erik=20Bot=C3=B6?= -Date: Fri, 4 Apr 2014 10:59:18 +0200 -Subject: [PATCH 1/4] Fix build with systemd >= 209 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Upstream-Status: Inappropriate [Configuration Specific] -Signed-off-by: Erik Botö ---- - src/system/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/system/CMakeLists.txt b/src/system/CMakeLists.txt -index ce87914..1d0d224 100644 ---- a/src/system/CMakeLists.txt -+++ b/src/system/CMakeLists.txt -@@ -23,7 +23,7 @@ set(dlt_system_SRCS dlt-system.c dlt-system-options.c dlt-system-process-handlin - dlt-system-syslog.c dlt-system-watchdog.c dlt-system-journal.c) - add_executable(dlt-system ${dlt_system_SRCS} ${systemd_SRCS}) - if(WITH_SYSTEMD_JOURNAL) -- target_link_libraries(dlt-system dlt ${ZLIB_LIBRARIES} systemd-journal systemd-id128) -+ target_link_libraries(dlt-system dlt ${ZLIB_LIBRARIES} systemd) - else(WITH_SYSTEMD_JOURNAL) - target_link_libraries(dlt-system dlt ${ZLIB_LIBRARIES}) - endif(WITH_SYSTEMD_JOURNAL) --- -1.9.3 - diff --git a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch b/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch deleted file mode 100644 index 168847990..000000000 --- a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch +++ /dev/null @@ -1,81 +0,0 @@ -From bcca4c99394ba422d03a5e76f2a0023ef248824a Mon Sep 17 00:00:00 2001 -From: Andrei Gherzan -Date: Tue, 18 Nov 2014 15:47:22 +0100 -Subject: [PATCH 2/4] Don't execute processes as a specific user. - -Upstream-Status: Inappropriate [Configuration Specific] -Signed-off-by: Andrei Gherzan ---- - systemd/dlt-adaptor-udp.service.cmake | 1 - - systemd/dlt-example-user.service.cmake | 1 - - systemd/dlt-receive.service.cmake | 1 - - systemd/dlt-system.service.cmake | 1 - - systemd/dlt.service.cmake | 1 - - 5 files changed, 5 deletions(-) - -diff --git a/systemd/dlt-adaptor-udp.service.cmake b/systemd/dlt-adaptor-udp.service.cmake -index 8dac1f2..ecf9f9e 100644 ---- a/systemd/dlt-adaptor-udp.service.cmake -+++ b/systemd/dlt-adaptor-udp.service.cmake -@@ -21,9 +21,8 @@ Wants=dlt.service - - [Service] - Type=simple --User=@DLT_USER@ - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-adaptor-udp -a @DLT_ADAPTOR_UDP_APPID@ -c @DLT_ADAPTOR_UDP_CTID@ -p @DLT_ADAPTOR_UDP_PORT@ - LimitCORE=infinity - - [Install] --WantedBy=multi-user.target -\ No newline at end of file -+WantedBy=multi-user.target -diff --git a/systemd/dlt-example-user.service.cmake b/systemd/dlt-example-user.service.cmake -index b665742..35009b0 100644 ---- a/systemd/dlt-example-user.service.cmake -+++ b/systemd/dlt-example-user.service.cmake -@@ -21,6 +21,5 @@ Wants=dlt.service - - [Service] - Type=simple --User=@DLT_USER@ - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-example-user "Hallo from GENIVI DLT example user application" --LimitCORE=infinity -\ No newline at end of file -+LimitCORE=infinity -diff --git a/systemd/dlt-receive.service.cmake b/systemd/dlt-receive.service.cmake -index c07d447..8f88f00 100644 ---- a/systemd/dlt-receive.service.cmake -+++ b/systemd/dlt-receive.service.cmake -@@ -22,6 +22,5 @@ Wants=dlt.service - - [Service] - Type=simple --User=@DLT_USER@ - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-receive -o /tmp/dlt_receive_log.dlt localhost --LimitCORE=infinity -\ No newline at end of file -+LimitCORE=infinity -diff --git a/systemd/dlt-system.service.cmake b/systemd/dlt-system.service.cmake -index 0e91f42..1a5b913 100755 ---- a/systemd/dlt-system.service.cmake -+++ b/systemd/dlt-system.service.cmake -@@ -22,7 +22,6 @@ Wants=dlt.service - - [Service] - Type=simple --User=@DLT_USER@ - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-system - WatchdogSec=@DLT_WatchdogSec@ - NotifyAccess=main -diff --git a/systemd/dlt.service.cmake b/systemd/dlt.service.cmake -index 0b3ee2c..e4753a2 100755 ---- a/systemd/dlt.service.cmake -+++ b/systemd/dlt.service.cmake -@@ -21,7 +21,6 @@ Documentation=man:dlt-daemon(1) man:dlt.conf(5) - - [Service] - Type=simple --User=@DLT_USER@ - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-daemon - WatchdogSec=@DLT_WatchdogSec@ - NotifyAccess=main diff --git a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch b/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch deleted file mode 100644 index 691a50027..000000000 --- a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 6804c68ed61f4436818c58cb0abe1c21b4d48aea Mon Sep 17 00:00:00 2001 -From: Andrei Gherzan -Date: Tue, 18 Nov 2014 15:48:50 +0100 -Subject: [PATCH 3/4] systemd/*: unit type should be in lowercase, so use - Type=simple - -Upstream-Status: Submitted [http://lists.genivi.org/pipermail/genivi-diagnostic-log-and-trace/2014-October/000546.html] -Signed-off-by: Andrei Gherzan ---- - systemd/dlt-adaptor-udp.service.cmake | 2 +- - systemd/dlt-dbus.service.cmake | 2 +- - systemd/dlt-example-user.service.cmake | 2 +- - systemd/dlt-receive.service.cmake | 2 +- - systemd/dlt-system.service.cmake | 2 +- - systemd/dlt.service.cmake | 2 +- - 6 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/systemd/dlt-adaptor-udp.service.cmake b/systemd/dlt-adaptor-udp.service.cmake -index f446757..81a7158 100644 ---- a/systemd/dlt-adaptor-udp.service.cmake -+++ b/systemd/dlt-adaptor-udp.service.cmake -@@ -19,7 +19,7 @@ Description=GENIVI DLT adaptor stdin. Adaptor for forwarding received UDP messag - Wants=dlt.service - - [Service] --Type=Simple -+Type=simple - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-adaptor-udp -a @DLT_ADAPTOR_UDP_APPID@ -c @DLT_ADAPTOR_UDP_CTID@ -p @DLT_ADAPTOR_UDP_PORT@ - LimitCORE=infinity - -diff --git a/systemd/dlt-dbus.service.cmake b/systemd/dlt-dbus.service.cmake -index d1e3b12..75dcdc3 100755 ---- a/systemd/dlt-dbus.service.cmake -+++ b/systemd/dlt-dbus.service.cmake -@@ -20,7 +20,7 @@ Documentation=man:dlt-dbus(1) man:dlt-dbus.conf(5) - Wants=dlt.service - - [Service] --Type=Simple -+Type=simple - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-dbus - WatchdogSec=@DLT_WatchdogSec@ - NotifyAccess=main -diff --git a/systemd/dlt-example-user.service.cmake b/systemd/dlt-example-user.service.cmake -index b67a83c..fe9c567 100644 ---- a/systemd/dlt-example-user.service.cmake -+++ b/systemd/dlt-example-user.service.cmake -@@ -19,6 +19,6 @@ Description=GENIVI DLT example user. Generate DLT messages and store them to fil - Wants=dlt.service - - [Service] --Type=Simple -+Type=simple - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-example-user "Hallo from GENIVI DLT example user application" - LimitCORE=infinity -\ No newline at end of file -diff --git a/systemd/dlt-receive.service.cmake b/systemd/dlt-receive.service.cmake -index 4bbdfc2..3b47dd3 100644 ---- a/systemd/dlt-receive.service.cmake -+++ b/systemd/dlt-receive.service.cmake -@@ -20,6 +20,6 @@ Documentation=man:dlt-receive(1) - Wants=dlt.service - - [Service] --Type=Simple -+Type=simple - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-receive -o /tmp/dlt_receive_log.dlt localhost - LimitCORE=infinity -\ No newline at end of file -diff --git a/systemd/dlt-system.service.cmake b/systemd/dlt-system.service.cmake -index 7ec995c..d4a4c96 100755 ---- a/systemd/dlt-system.service.cmake -+++ b/systemd/dlt-system.service.cmake -@@ -20,7 +20,7 @@ Documentation=man:dlt-system(1) man:dlt-system.conf(5) - Wants=dlt.service - - [Service] --Type=Simple -+Type=simple - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-system - WatchdogSec=@DLT_WatchdogSec@ - NotifyAccess=main -diff --git a/systemd/dlt.service.cmake b/systemd/dlt.service.cmake -index 7bb05bc..5386ffd 100755 ---- a/systemd/dlt.service.cmake -+++ b/systemd/dlt.service.cmake -@@ -19,7 +19,7 @@ Description=GENIVI DLT logging daemon - Documentation=man:dlt-daemon(1) man:dlt.conf(5) - - [Service] --Type=Simple -+Type=simple - ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-daemon - WatchdogSec=@DLT_WatchdogSec@ - NotifyAccess=main --- -1.9.3 - diff --git a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch b/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch deleted file mode 100644 index 685dfcddc..000000000 --- a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 9a5e655cf57301008cd61d53c8a410a7f397e650 Mon Sep 17 00:00:00 2001 -From: Andrei Gherzan -Date: Tue, 18 Nov 2014 15:51:30 +0100 -Subject: [PATCH 4/4] Modify systemd config directory - -Upstream-Status: Inappropriate [Configuration Specific] -Signed-off-by: Andrei Gherzan ---- - systemd/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index e6b44a2..0e885bf 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -175,7 +175,7 @@ if(WITH_SYSTEMD OR WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD_JOURNAL) - - set( systemd_SRCS ${CMAKE_SOURCE_DIR}/systemd/3rdparty/sd-daemon.c) - -- set(SYSTEMD_UNITDIR "${CMAKE_INSTALL_PREFIX}/lib/systemd/system" CACHE PATH -+ set(SYSTEMD_UNITDIR "/lib/systemd/system" CACHE PATH - "Set directory to install systemd unit files") - - add_subdirectory( systemd ) diff --git a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon_2.11.1.bb b/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon_2.11.1.bb deleted file mode 100644 index b521bca91..000000000 --- a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon_2.11.1.bb +++ /dev/null @@ -1,54 +0,0 @@ -SUMMARY = "Diagnostic Log and Trace" -DESCRIPTION = "This component provides a standardised log and trace interface, \ -based on the standardised protocol specified in the AUTOSAR standard 4.0 DLT. \ -This component can be used by GENIVI components and other applications as \ -logging facility providing: \ -- the DLT shared library \ -- the DLT daemon, including startup scripts \ -- the DLT daemon adaptors- the DLT client console utilities \ -- the DLT test applications" -HOMEPAGE = "https://www.genivi.org/" -SECTION = "console/utils" -LICENSE = "MPLv2" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=99ba60c3fad7eaf8c56bca6dd75cba09 \ - file://MPL.txt;md5=ccdb2761cef70c8b2612624c323f89dc" - -DEPENDS = "dbus zlib pigz-native" -do_unpack[depends] += "pigz-native:do_populate_sysroot" - -# FIX ME -# This should be TAG = "v${PV}" but yocto doesn't support lightweight tags for now -# https://bugzilla.yoctoproject.org/show_bug.cgi?id=6881 -TAG = "b8b3ea3a31f7deb681941a19878c82e7b7350ae7" -BRANCH = "v2.11.x" -SRC_URI = "git://git.projects.genivi.org/${PN}.git;branch=${BRANCH};tag=${TAG} \ - file://0001-Fix-build-with-systemd-209.patch \ - file://0002-Don-t-execute-processes-as-a-specific-user.patch \ - file://0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch \ - file://0004-Modify-systemd-config-directory.patch" -S = "${WORKDIR}/git" - -inherit autotools gettext cmake systemd - -# -fPIC is needed to prevent relocation errors when we compile gtest with -# Yocto security flags. See this issue for more details: -# -# https://github.com/google/googletest/issues/854 -# -# If that issue is fixed, we can probably remove the manual -fPIC flags here. -OECMAKE_C_FLAGS += "-fPIC" -OECMAKE_CXX_FLAGS += "-fPIC" - -PACKAGES += "${PN}-systemd" -SYSTEMD_PACKAGES = "${PN} ${PN}-systemd" -SYSTEMD_SERVICE_${PN} = "dlt-system.service dlt.service" -SYSTEMD_AUTO_ENABLE_${PN} = "enable" -SYSTEMD_SERVICE_${PN}-systemd = "dlt-example-user.service \ - dlt-dbus.service \ - dlt-adaptor-udp.service \ - dlt-receive.service" -SYSTEMD_AUTO_ENABLE_${PN}-systemd = "disable" - -EXTRA_OECMAKE = "-DWITH_SYSTEMD=ON" - -FILES_${PN}-doc += "/usr/share/dlt-filetransfer" diff --git a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon_2.15.0.bb b/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon_2.15.0.bb deleted file mode 100644 index dbc87c9ac..000000000 --- a/meta-agl-profile-demo/recipes-extended/dlt-daemon/dlt-daemon_2.15.0.bb +++ /dev/null @@ -1,52 +0,0 @@ -SUMMARY = "Diagnostic Log and Trace" -DESCRIPTION = "This component provides a standardised log and trace interface, \ -based on the standardised protocol specified in the AUTOSAR standard 4.0 DLT. \ -This component can be used by GENIVI components and other applications as \ -logging facility providing: \ -- the DLT shared library \ -- the DLT daemon, including startup scripts \ -- the DLT daemon adaptors- the DLT client console utilities \ -- the DLT test applications" -HOMEPAGE = "https://www.genivi.org/" -SECTION = "console/utils" -LICENSE = "MPLv2" -LIC_FILES_CHKSUM = "file://LICENSE;md5=8184208060df880fe3137b93eb88aeea" - -DEPENDS = "dbus zlib pigz-native" -do_unpack[depends] += "pigz-native:do_populate_sysroot" - -SRCREV = "e9a486a08fff6d3cc7133a350cec3ee10f463207" -SRC_URI = "git://git.projects.genivi.org/${BPN}.git;protocol=http \ - file://0002-Don-t-execute-processes-as-a-specific-user.patch \ - file://0004-Modify-systemd-config-directory.patch \ - " -S = "${WORKDIR}/git" - -inherit autotools gettext cmake systemd - -# -fPIC is needed to prevent relocation errors when we compile gtest with -# Yocto security flags. See this issue for more details: -# -# https://github.com/google/googletest/issues/854 -# -# If that issue is fixed, we can probably remove the manual -fPIC flags here. -OECMAKE_C_FLAGS += "-fPIC" -OECMAKE_CXX_FLAGS += "-fPIC" - -PACKAGES += "${PN}-systemd" -SYSTEMD_PACKAGES = "${PN} ${PN}-systemd" -SYSTEMD_SERVICE_${PN} = "dlt-system.service dlt.service" -SYSTEMD_AUTO_ENABLE_${PN} = "enable" -SYSTEMD_SERVICE_${PN}-systemd = "dlt-example-user.service \ - dlt-dbus.service \ - dlt-adaptor-udp.service \ - dlt-receive.service" -SYSTEMD_AUTO_ENABLE_${PN}-systemd = "disable" - -EXTRA_OECMAKE = "-DWITH_SYSTEMD=ON" - -FILES_${PN}-doc += "/usr/share/dlt-filetransfer" - -do_install_append() { - rm -f ${D}${bindir}/dlt-test-* -} diff --git a/meta-agl-profile-demo/recipes-kernel/mocca-usb/mocca-usb.bb b/meta-agl-profile-demo/recipes-kernel/mocca-usb/mocca-usb.bb deleted file mode 100644 index cf4e5856b..000000000 --- a/meta-agl-profile-demo/recipes-kernel/mocca-usb/mocca-usb.bb +++ /dev/null @@ -1,22 +0,0 @@ -DESCRIPTION = "Build USB driver for MOCCA box" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" - -inherit module - -PV = "0.1" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/can-lin/;protocol=https;branch=${AGL_BRANCH}" -S = "${WORKDIR}/git/Usb-Driver" -SRCREV = "02ba272c0eb51b06160307b6cb71f91684772c8c" - -# The inherit of module.bbclass will automatically name module packages with -# "kernel-module-" prefix as required by the oe-core build environment. - -do_install_append () { - # modprobe automatically at boot - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then - install -d ${D}${sysconfdir}/modules-load.d - echo "mocca_usb" > ${D}${sysconfdir}/modules-load.d/mocca_usb.conf - fi -} diff --git a/meta-agl-profile-demo/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch b/meta-agl-profile-demo/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch deleted file mode 100644 index dd811c81b..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch +++ /dev/null @@ -1,472 +0,0 @@ -From 9cb7cb85f59509ac445116e9458c502cf6cb74e6 Mon Sep 17 00:00:00 2001 -From: Christian Gromm -Date: Thu, 9 Nov 2017 13:20:23 +0100 -Subject: [PATCH 2/2] src: most: add auto conf feature - -This patch adds the auto configuration feature to the driver -sources. It is needed to have the driver configured automatically -upon start up w/o the need for userspace to set up sysfs. - -Signed-off-by: Christian Gromm ---- - driver/Makefile | 3 + - driver/default_conf.c | 162 ++++++++++++++++++++++++++++++++++++++++++++++ - driver/include/mostcore.h | 64 ++++++++++++++++++ - driver/mostcore/core.c | 120 ++++++++++++++++++++++++++++------ - 4 files changed, 331 insertions(+), 18 deletions(-) - create mode 100644 driver/default_conf.c - -diff --git a/Makefile b/Makefile -index e77a4b6..6d74ebe 100644 ---- a/Makefile -+++ b/Makefile -@@ -6,6 +6,9 @@ obj-m := mostcore.o - mostcore-y := mostcore/core.o - CFLAGS_core.o := -I$(src)/include/ - -+obj-m += default_conf.o -+CFLAGL_default_conf.o := -I$(src)/include -+ - obj-m += aim_cdev.o - aim_cdev-y := aim-cdev/cdev.o - CFLAGS_cdev.o := -I$(src)/include/ -diff --git a/default_conf.c b/default_conf.c -new file mode 100644 -index 0000000..adb1786 ---- /dev/null -+++ b/default_conf.c -@@ -0,0 +1,162 @@ -+/* -+ * default_conf.c - Default configuration for the MOST channels. -+ * -+ * Copyright (C) 2017, Microchip Technology Germany II GmbH & Co. KG -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * This file is licensed under GPLv2. -+ */ -+ -+#include "include/mostcore.h" -+#include -+ -+static struct most_config_probe config_probes[] = { -+ -+ /* OS81118 Control */ -+ { -+ .ch_name = "ep8f", -+ .cfg = { -+ .direction = MOST_CH_RX, -+ .data_type = MOST_CH_CONTROL, -+ .num_buffers = 16, -+ .buffer_size = 64, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-crx", -+ }, -+ { -+ .ch_name = "ep0f", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_CONTROL, -+ .num_buffers = 16, -+ .buffer_size = 64, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-ctx", -+ }, -+ /* OS81118 Async */ -+ { -+ .ch_name = "ep8e", -+ .cfg = { -+ .direction = MOST_CH_RX, -+ .data_type = MOST_CH_ASYNC, -+ .num_buffers = 20, -+ .buffer_size = 1522, -+ }, -+ .aim_name = "networking", -+ .aim_param = "inic-usb-arx", -+ }, -+ { -+ .ch_name = "ep0e", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_ASYNC, -+ .num_buffers = 20, -+ .buffer_size = 1522, -+ }, -+ .aim_name = "networking", -+ .aim_param = "inic-usb-atx", -+ }, -+ /* OS81210 Control */ -+ { -+ .ch_name = "ep87", -+ .cfg = { -+ .direction = MOST_CH_RX, -+ .data_type = MOST_CH_CONTROL, -+ .num_buffers = 16, -+ .buffer_size = 64, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-crx", -+ }, -+ { -+ .ch_name = "ep07", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_CONTROL, -+ .num_buffers = 16, -+ .buffer_size = 64, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-ctx", -+ }, -+ /* OS81210 Async */ -+ { -+ .ch_name = "ep86", -+ .cfg = { -+ .direction = MOST_CH_RX, -+ .data_type = MOST_CH_ASYNC, -+ .num_buffers = 20, -+ .buffer_size = 1522, -+ }, -+ .aim_name = "networking", -+ .aim_param = "inic-usb-arx", -+ }, -+ { -+ .ch_name = "ep06", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_ASYNC, -+ .num_buffers = 20, -+ .buffer_size = 1522, -+ }, -+ .aim_name = "networking", -+ .aim_param = "inic-usb-atx", -+ }, -+ /* Streaming channels (common for all INICs) */ -+ { -+ .ch_name = "ep01", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_SYNC, -+ .num_buffers = 8, -+ .buffer_size = 2 * 12 * 42, -+ .subbuffer_size = 12, -+ .packets_per_xact = 42, -+ }, -+ .aim_name = "sound", -+ .aim_param = "ep01-6ch.6x16", -+ }, -+ { -+ .ch_name = "ep02", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_ISOC, -+ .num_buffers = 8, -+ .buffer_size = 40 * 188, -+ .subbuffer_size = 188, -+ .packets_per_xact = 2, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-itx1", -+ }, -+ -+ /* sentinel */ -+ {} -+}; -+ -+static struct most_config_set config_set = { -+ .probes = config_probes -+}; -+ -+static int __init mod_init(void) -+{ -+ most_register_config_set(&config_set); -+ return 0; -+} -+ -+static void __exit mod_exit(void) -+{ -+ most_deregister_config_set(&config_set); -+} -+ -+module_init(mod_init); -+module_exit(mod_exit); -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Andrey Shvetsov "); -+MODULE_DESCRIPTION("Default configuration for the MOST channels"); -diff --git a/include/mostcore.h b/include/mostcore.h -index dc87121..3c00efb 100644 ---- a/include/mostcore.h -+++ b/include/mostcore.h -@@ -145,6 +145,39 @@ struct most_channel_config { - u16 dbr_size; - }; - -+/** -+ * struct most_config_probe - matching rule, channel configuration and -+ * the optional AIM name used for the automatic configuration and linking -+ * of the channel -+ * @dev_name: optional matching device id -+ * ("usb_device 1-1:1.0," "dim2-12345678", etc.) -+ * @ch_name: matching channel name ("ep8f", "ca2", etc.) -+ * @cfg: configuration that will be applied for the found channel -+ * @aim_name: optional name of the AIM that will be linked to the channel -+ * ("cdev", "networking", "v4l", "sound") -+ * @aim_param: AIM dependent parameter (it is the character device name -+ * for the cdev AIM, PCM format for the audio AIM, etc.) -+ */ -+struct most_config_probe { -+ const char *dev_name; -+ const char *ch_name; -+ struct most_channel_config cfg; -+ const char *aim_name; -+ const char *aim_param; -+}; -+ -+/** -+ * struct most_config_set - the configuration set containing -+ * several automatic configurations for the different channels -+ * @probes: list of the matching rules and the configurations, -+ * that must be ended with the empty structure -+ * @list: list head used by the MostCore -+ */ -+struct most_config_set { -+ const struct most_config_probe *probes; -+ struct list_head list; -+}; -+ - /* - * struct mbo - MOST Buffer Object. - * @context: context for core completion handler -@@ -285,6 +318,37 @@ struct most_aim { - }; - - /** -+ * most_register_config_set - registers the configuration set -+ * -+ * @cfg_set: configuration set to be registered for the future probes -+ * -+ * The function registers the given configuration set. -+ * -+ * It is possible to register or deregister several configuration sets -+ * independently. Different configuration sets may contain the -+ * overlapped matching rules but later registered configuration set has -+ * the higher priority over the prior registered set. -+ * -+ * The only the first matched configuration is applied for each -+ * channel. -+ * -+ * The configuration for the channel is applied at the time of -+ * registration of the parent most_interface. -+ */ -+void most_register_config_set(struct most_config_set *cfg_set); -+ -+/** -+ * most_deregister_config_set - deregisters the prior registered -+ * configuration set -+ * -+ * @cfg_set: configuration set to be deregistered -+ * -+ * The calling of this function does not change the current -+ * configuration of the channels. -+ */ -+void most_deregister_config_set(struct most_config_set *cfg_set); -+ -+/** - * most_register_interface - Registers instance of the interface. - * @iface: Pointer to the interface instance description. - * -diff --git a/mostcore/core.c b/mostcore/core.c -index 9e0a352..6035cf0 100644 ---- a/mostcore/core.c -+++ b/mostcore/core.c -@@ -36,6 +36,8 @@ static struct class *most_class; - static struct device *core_dev; - static struct ida mdev_id; - static int dummy_num_buffers; -+static struct list_head config_probes; -+struct mutex config_probes_mt; /* config_probes */ - - struct most_c_aim_obj { - struct most_aim *ptr; -@@ -918,6 +920,30 @@ most_c_obj *get_channel_by_name(char *mdev, char *mdev_ch) - return c; - } - -+static int link_channel_to_aim(struct most_c_obj *c, struct most_aim *aim, -+ char *aim_param) -+{ -+ int ret; -+ struct most_aim **aim_ptr; -+ -+ if (!c->aim0.ptr) -+ aim_ptr = &c->aim0.ptr; -+ else if (!c->aim1.ptr) -+ aim_ptr = &c->aim1.ptr; -+ else -+ return -ENOSPC; -+ -+ *aim_ptr = aim; -+ ret = aim->probe_channel(c->iface, c->channel_id, -+ &c->cfg, &c->kobj, aim_param); -+ if (ret) { -+ *aim_ptr = NULL; -+ return ret; -+ } -+ -+ return 0; -+} -+ - /** - * add_link_store - store() function for add_link attribute - * @aim_obj: pointer to AIM object -@@ -946,45 +972,33 @@ static ssize_t add_link_store(struct most_aim_obj *aim_obj, - size_t len) - { - struct most_c_obj *c; -- struct most_aim **aim_ptr; - char buffer[STRING_SIZE]; - char *mdev; - char *mdev_ch; -- char *mdev_devnod; -+ char *aim_param; - char devnod_buf[STRING_SIZE]; - int ret; - size_t max_len = min_t(size_t, len + 1, STRING_SIZE); - - strlcpy(buffer, buf, max_len); - -- ret = split_string(buffer, &mdev, &mdev_ch, &mdev_devnod); -+ ret = split_string(buffer, &mdev, &mdev_ch, &aim_param); - if (ret) - return ret; - -- if (!mdev_devnod || *mdev_devnod == 0) { -+ if (!aim_param || *aim_param == 0) { - snprintf(devnod_buf, sizeof(devnod_buf), "%s-%s", mdev, - mdev_ch); -- mdev_devnod = devnod_buf; -+ aim_param = devnod_buf; - } - - c = get_channel_by_name(mdev, mdev_ch); - if (IS_ERR(c)) - return -ENODEV; - -- if (!c->aim0.ptr) -- aim_ptr = &c->aim0.ptr; -- else if (!c->aim1.ptr) -- aim_ptr = &c->aim1.ptr; -- else -- return -ENOSPC; -- -- *aim_ptr = aim_obj->driver; -- ret = aim_obj->driver->probe_channel(c->iface, c->channel_id, -- &c->cfg, &c->kobj, mdev_devnod); -- if (ret) { -- *aim_ptr = NULL; -+ ret = link_channel_to_aim(c, aim_obj->driver, aim_param); -+ if (ret) - return ret; -- } - - return len; - } -@@ -1679,6 +1693,73 @@ int most_deregister_aim(struct most_aim *aim) - } - EXPORT_SYMBOL_GPL(most_deregister_aim); - -+void most_register_config_set(struct most_config_set *cfg_set) -+{ -+ mutex_lock(&config_probes_mt); -+ list_add(&cfg_set->list, &config_probes); -+ mutex_unlock(&config_probes_mt); -+} -+EXPORT_SYMBOL(most_register_config_set); -+ -+void most_deregister_config_set(struct most_config_set *cfg_set) -+{ -+ mutex_lock(&config_probes_mt); -+ list_del(&cfg_set->list); -+ mutex_unlock(&config_probes_mt); -+} -+EXPORT_SYMBOL(most_deregister_config_set); -+ -+static int probe_aim(struct most_c_obj *c, -+ const char *aim_name, const char *aim_param) -+{ -+ struct most_aim_obj *aim_obj; -+ char buf[STRING_SIZE]; -+ -+ list_for_each_entry(aim_obj, &aim_list, list) { -+ if (!strcmp(aim_obj->driver->name, aim_name)) { -+ strlcpy(buf, aim_param ? aim_param : "", sizeof(buf)); -+ return link_channel_to_aim(c, aim_obj->driver, buf); -+ } -+ } -+ return 0; -+} -+ -+static bool probe_config_set(struct most_c_obj *c, -+ const char *dev_name, const char *ch_name, -+ const struct most_config_probe *p) -+{ -+ int err; -+ -+ for (; p->ch_name; p++) { -+ if ((p->dev_name && strcmp(dev_name, p->dev_name)) || -+ strcmp(ch_name, p->ch_name)) -+ continue; -+ -+ c->cfg = p->cfg; -+ if (p->aim_name) { -+ err = probe_aim(c, p->aim_name, p->aim_param); -+ if (err) -+ pr_err("failed to autolink %s to %s: %d\n", -+ ch_name, p->aim_name, err); -+ } -+ return true; -+ } -+ return false; -+} -+ -+static void find_configuration(struct most_c_obj *c, const char *dev_name, -+ const char *ch_name) -+{ -+ struct most_config_set *plist; -+ -+ mutex_lock(&config_probes_mt); -+ list_for_each_entry(plist, &config_probes, list) { -+ if (probe_config_set(c, dev_name, ch_name, plist->probes)) -+ break; -+ } -+ mutex_unlock(&config_probes_mt); -+} -+ - /** - * most_register_interface - registers an interface with core - * @iface: pointer to the instance of the interface description. -@@ -1777,6 +1858,7 @@ struct kobject *most_register_interface(struct most_interface *iface) - mutex_init(&c->start_mutex); - mutex_init(&c->nq_mutex); - list_add_tail(&c->list, &inst->channel_list); -+ find_configuration(c, iface->description, channel_name); - } - pr_info("registered new MOST device mdev%d (%s)\n", - inst->dev_id, iface->description); -@@ -1880,6 +1962,8 @@ static int __init most_init(void) - pr_info("init()\n"); - INIT_LIST_HEAD(&instance_list); - INIT_LIST_HEAD(&aim_list); -+ INIT_LIST_HEAD(&config_probes); -+ mutex_init(&config_probes_mt); - ida_init(&mdev_id); - - err = bus_register(&most_bus); --- -2.7.4 - diff --git a/meta-agl-profile-demo/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch b/meta-agl-profile-demo/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch deleted file mode 100644 index 4703844a1..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch +++ /dev/null @@ -1,26 +0,0 @@ -From b269994be937cbb31c0d73ecc899ca8a545a6a4a Mon Sep 17 00:00:00 2001 -From: Christian Gromm -Date: Mon, 4 Sep 2017 11:09:17 +0200 -Subject: [PATCH 3/5] core: remove kernel log for MBO status - -Signed-off-by: Christian Gromm ---- - driver/mostcore/core.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/mostcore/core.c b/mostcore/core.c -index 931efb9..595becc 100644 ---- a/mostcore/core.c -+++ b/mostcore/core.c -@@ -1348,8 +1348,6 @@ static void most_write_completion(struct mbo *mbo) - BUG_ON((!mbo) || (!mbo->context)); - - c = mbo->context; -- if (mbo->status == MBO_E_INVAL) -- pr_info("WARN: Tx MBO status: invalid\n"); - if (unlikely(c->is_poisoned || (mbo->status == MBO_E_CLOSE))) - trash_mbo(mbo); - else --- -2.7.4 - diff --git a/meta-agl-profile-demo/recipes-kernel/most/files/0004-most-video-set-device_caps.patch b/meta-agl-profile-demo/recipes-kernel/most/files/0004-most-video-set-device_caps.patch deleted file mode 100644 index 010d4b0d0..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/files/0004-most-video-set-device_caps.patch +++ /dev/null @@ -1,25 +0,0 @@ -From a5fd2ae8d4a3b2a8f7a33a4ea469ea7ee0d946ef Mon Sep 17 00:00:00 2001 -From: Christian Gromm -Date: Mon, 4 Sep 2017 15:36:38 +0200 -Subject: [PATCH 4/5] most: video: set device_caps - -Signed-off-by: Christian Gromm ---- - driver/aim-v4l2/video.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/aim-v4l2/video.c b/aim-v4l2/video.c -index e074841..6405a03 100644 ---- a/aim-v4l2/video.c -+++ b/aim-v4l2/video.c -@@ -263,6 +263,7 @@ static int vidioc_querycap(struct file *file, void *priv, - snprintf(cap->bus_info, sizeof(cap->bus_info), - "%s", mdev->iface->description); - -+ cap->device_caps = - cap->capabilities = - V4L2_CAP_READWRITE | - V4L2_CAP_TUNER | --- -2.7.4 - diff --git a/meta-agl-profile-demo/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch b/meta-agl-profile-demo/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch deleted file mode 100644 index ebaee9e14..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 7518453386ad3e82008186a6c9ca86ed8c136801 Mon Sep 17 00:00:00 2001 -From: Christian Gromm -Date: Mon, 4 Sep 2017 16:08:38 +0200 -Subject: [PATCH 5/5] most: video: set V4L2_CAP_DEVICE_CAPS flag - -Signed-off-by: Christian Gromm ---- - driver/aim-v4l2/video.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/aim-v4l2/video.c b/aim-v4l2/video.c -index 6405a03..db75d4d 100644 ---- a/aim-v4l2/video.c -+++ b/aim-v4l2/video.c -@@ -265,6 +265,7 @@ static int vidioc_querycap(struct file *file, void *priv, - - cap->device_caps = - cap->capabilities = -+ V4L2_CAP_DEVICE_CAPS | - V4L2_CAP_READWRITE | - V4L2_CAP_TUNER | - V4L2_CAP_VIDEO_CAPTURE; --- -2.7.4 - diff --git a/meta-agl-profile-demo/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch b/meta-agl-profile-demo/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch deleted file mode 100644 index 59c6ae671..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 63bcd9b421ae7927948bffec9566db47f40ea290 Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov -Date: Tue, 30 Jan 2018 17:34:09 +0100 -Subject: [PATCH] staging: most: dim2: fix startup sequence - -Platform specific initializations (pdata->init) must be done before DIM2 -IP module startup (dim_startup). - -Signed-off-by: Andrey Shvetsov ---- - hdm-dim2/dim2_hdm.c | 90 +++++++++++++++++++++++++++++++++++++++--------------------------------------------------- - 1 file changed, 39 insertions(+), 51 deletions(-) - -diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c -index 893b8e4..e4629a5 100644 ---- a/hdm-dim2/dim2_hdm.c -+++ b/hdm-dim2/dim2_hdm.c -@@ -155,38 +155,6 @@ void dimcb_on_error(u8 error_id, const char *error_message) - } - - /** -- * startup_dim - initialize the dim2 interface -- * @pdev: platform device -- */ --static int startup_dim(struct platform_device *pdev) --{ -- struct dim2_hdm *dev = platform_get_drvdata(pdev); -- struct dim2_platform_data *pdata = pdev->dev.platform_data; -- u8 hal_ret; -- int ret; -- -- if (!pdata) { -- pr_err("missing platform data\n"); -- return -EINVAL; -- } -- -- ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; -- if (ret) -- return ret; -- -- pr_info("sync: num of frames per sub-buffer: %u\n", fcnt); -- hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); -- if (hal_ret != DIM_NO_ERROR) { -- pr_err("dim_startup failed: %d\n", hal_ret); -- if (pdata && pdata->destroy) -- pdata->destroy(pdata); -- return -ENODEV; -- } -- -- return 0; --} -- --/** - * try_start_dim_transfer - try to transfer a buffer on a channel - * @hdm_ch: channel specific data - * -@@ -727,10 +695,12 @@ static void dma_free(struct mbo *mbo, u32 size) - */ - static int dim2_probe(struct platform_device *pdev) - { -+ struct dim2_platform_data *pdata = pdev->dev.platform_data; - struct dim2_hdm *dev; - struct resource *res; - int ret, i; - struct kobject *kobj; -+ u8 hal_ret; - int irq; - - dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); -@@ -745,38 +715,59 @@ static int dim2_probe(struct platform_device *pdev) - if (IS_ERR(dev->io_base)) - return PTR_ERR(dev->io_base); - -+ if (!pdata) { -+ dev_err(&pdev->dev, "missing platform data\n"); -+ return -EINVAL; -+ } -+ -+ ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; -+ if (ret) -+ return ret; -+ -+ dev_info(&pdev->dev, "sync: num of frames per sub-buffer: %u\n", fcnt); -+ hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); -+ if (hal_ret != DIM_NO_ERROR) { -+ dev_err(&pdev->dev, "dim_startup failed: %d\n", hal_ret); -+ ret = -ENODEV; -+ goto err_bsp_destroy; -+ } -+ - irq = platform_get_irq(pdev, 0); - if (irq < 0) { - dev_err(&pdev->dev, "failed to get ahb0_int irq: %d\n", irq); -- return irq; -+ ret = irq; -+ goto err_shutdown_dim; - } - - ret = devm_request_irq(&pdev->dev, irq, dim2_ahb_isr, 0, - "dim2_ahb0_int", dev); - if (ret) { - dev_err(&pdev->dev, "failed to request ahb0_int irq %d\n", irq); -- return ret; -+ goto err_shutdown_dim; - } - - irq = platform_get_irq(pdev, 1); - if (irq < 0) { - dev_err(&pdev->dev, "failed to get mlb_int irq: %d\n", irq); -- return irq; -+ ret = irq; -+ goto err_shutdown_dim; - } - - ret = devm_request_irq(&pdev->dev, irq, dim2_mlb_isr, 0, - "dim2_mlb_int", dev); - if (ret) { - dev_err(&pdev->dev, "failed to request mlb_int irq %d\n", irq); -- return ret; -+ goto err_shutdown_dim; - } - - init_waitqueue_head(&dev->netinfo_waitq); - dev->deliver_netinfo = 0; -- dev->netinfo_task = kthread_run(&deliver_netinfo_thread, (void *)dev, -+ dev->netinfo_task = kthread_run(&deliver_netinfo_thread, dev, - "dim2_netinfo"); -- if (IS_ERR(dev->netinfo_task)) -- return PTR_ERR(dev->netinfo_task); -+ if (IS_ERR(dev->netinfo_task)) { -+ ret = PTR_ERR(dev->netinfo_task); -+ goto err_shutdown_dim; -+ } - - for (i = 0; i < DMA_CHANNELS; i++) { - struct most_channel_capability *cap = dev->capabilities + i; -@@ -833,20 +824,17 @@ static int dim2_probe(struct platform_device *pdev) - if (ret) - goto err_unreg_iface; - -- ret = startup_dim(pdev); -- if (ret) { -- dev_err(&pdev->dev, "failed to initialize DIM2\n"); -- goto err_destroy_bus; -- } -- - return 0; - --err_destroy_bus: -- dim2_sysfs_destroy(&dev->bus); - err_unreg_iface: - most_deregister_interface(&dev->most_iface); - err_stop_thread: - kthread_stop(dev->netinfo_task); -+err_shutdown_dim: -+ dim_shutdown(); -+err_bsp_destroy: -+ if (pdata && pdata->destroy) -+ pdata->destroy(pdata); - - return ret; - } -@@ -863,6 +851,10 @@ static int dim2_remove(struct platform_device *pdev) - struct dim2_platform_data *pdata = pdev->dev.platform_data; - unsigned long flags; - -+ dim2_sysfs_destroy(&dev->bus); -+ most_deregister_interface(&dev->most_iface); -+ kthread_stop(dev->netinfo_task); -+ - spin_lock_irqsave(&dim_lock, flags); - dim_shutdown(); - spin_unlock_irqrestore(&dim_lock, flags); -@@ -870,10 +862,6 @@ static int dim2_remove(struct platform_device *pdev) - if (pdata && pdata->destroy) - pdata->destroy(pdata); - -- dim2_sysfs_destroy(&dev->bus); -- most_deregister_interface(&dev->most_iface); -- kthread_stop(dev->netinfo_task); -- - /* - * break link to local platform_device_id struct - * to prevent crash by unload platform device module --- -libgit2 0.26.0 diff --git a/meta-agl-profile-demo/recipes-kernel/most/files/0007-dim2-use-device-tree.patch b/meta-agl-profile-demo/recipes-kernel/most/files/0007-dim2-use-device-tree.patch deleted file mode 100644 index 679fab79c..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/files/0007-dim2-use-device-tree.patch +++ /dev/null @@ -1,378 +0,0 @@ -From 8e16207392cd715ea88f6780981a3d55ab005588 Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov -Date: Mon, 12 Feb 2018 12:23:37 +0100 -Subject: [PATCH] staging: most: dim2: use device tree - -Current dim2 driver expects the existence of a platform driver that -implements the platform specific initialization and delivery of the irq -numbers. - -This patch integrates the device tree activity and platform specific -code into the driver. - -Signed-off-by: Andrey Shvetsov ---- - hdm-dim2/dim2_hdm.c | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- - hdm-dim2/dim2_hdm.h | 28 ---------------------------- - hdm-dim2/platform/dim2_arwen_mlb3.c | 165 --------------------------------------------------------------------------------------------------------------------------------------------------------------------- - hdm-dim2/platform/dim2_arwen_mlb6.c | 169 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - hdm-dim2/platform/dim2_h2_dt.c | 227 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - hdm-dim2/platform/dim2_mx6q.c | 192 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - hdm-dim2/platform/dim2_mx6q_dt.c | 224 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 7 files changed, 193 insertions(+), 1034 deletions(-) - delete mode 100644 hdm-dim2/dim2_hdm.h - delete mode 100644 hdm-dim2/platform/dim2_arwen_mlb3.c - delete mode 100644 hdm-dim2/platform/dim2_arwen_mlb6.c - delete mode 100644 hdm-dim2/platform/dim2_h2_dt.c - delete mode 100644 hdm-dim2/platform/dim2_mx6q.c - delete mode 100644 hdm-dim2/platform/dim2_mx6q_dt.c - -diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c -index e4629a5..2dba917 100644 ---- a/hdm-dim2/dim2_hdm.c -+++ b/hdm-dim2/dim2_hdm.c -@@ -14,6 +14,7 @@ - #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - - #include -+#include - #include - #include - #include -@@ -21,13 +22,13 @@ - #include - #include - #include -+#include - #include - #include - #include - - #include - #include "dim2_hal.h" --#include "dim2_hdm.h" - #include "dim2_errors.h" - #include "dim2_sysfs.h" - -@@ -93,6 +94,9 @@ struct dim2_hdm { - struct most_interface most_iface; - char name[16 + sizeof "dim2-"]; - void __iomem *io_base; -+ u8 clk_speed; -+ struct clk *clk; -+ struct clk *clk_pll; - struct task_struct *netinfo_task; - wait_queue_head_t netinfo_waitq; - int deliver_netinfo; -@@ -102,6 +106,12 @@ struct dim2_hdm { - struct medialb_bus bus; - void (*on_netinfo)(struct most_interface *, - unsigned char, unsigned char *); -+ void (*disable_platform)(struct platform_device *); -+}; -+ -+struct dim2_platform_data { -+ int (*enable)(struct platform_device *); -+ void (*disable)(struct platform_device *); - }; - - #define iface_to_hdm(iface) container_of(iface, struct dim2_hdm, most_iface) -@@ -686,6 +696,8 @@ static void dma_free(struct mbo *mbo, u32 size) - dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address); - } - -+static const struct of_device_id dim2_of_match[]; -+ - /* - * dim2_probe - dim2 probe handler - * @pdev: platform device structure -@@ -695,7 +707,7 @@ static void dma_free(struct mbo *mbo, u32 size) - */ - static int dim2_probe(struct platform_device *pdev) - { -- struct dim2_platform_data *pdata = pdev->dev.platform_data; -+ const struct dim2_platform_data *pdata; - struct dim2_hdm *dev; - struct resource *res; - int ret, i; -@@ -703,6 +715,8 @@ static int dim2_probe(struct platform_device *pdev) - u8 hal_ret; - int irq; - -+ enum { MLB_INT_IDX, AHB0_INT_IDX }; -+ - dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); - if (!dev) - return -ENOMEM; -@@ -710,29 +724,30 @@ static int dim2_probe(struct platform_device *pdev) - dev->atx_idx = -1; - - platform_set_drvdata(pdev, dev); -+ -+ dev->clk_speed = CLK_4096FS; -+ - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - dev->io_base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(dev->io_base)) - return PTR_ERR(dev->io_base); - -- if (!pdata) { -- dev_err(&pdev->dev, "missing platform data\n"); -- return -EINVAL; -- } -- -- ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; -+ pdata = of_match_node(dim2_of_match, pdev->dev.of_node)->data; -+ ret = pdata && pdata->enable ? pdata->enable(pdev) : 0; - if (ret) - return ret; - -+ dev->disable_platform = pdata ? pdata->disable : 0; -+ - dev_info(&pdev->dev, "sync: num of frames per sub-buffer: %u\n", fcnt); -- hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); -+ hal_ret = dim_startup(dev->io_base, dev->clk_speed, fcnt); - if (hal_ret != DIM_NO_ERROR) { - dev_err(&pdev->dev, "dim_startup failed: %d\n", hal_ret); - ret = -ENODEV; -- goto err_bsp_destroy; -+ goto err_disable_platform; - } - -- irq = platform_get_irq(pdev, 0); -+ irq = platform_get_irq(pdev, AHB0_INT_IDX); - if (irq < 0) { - dev_err(&pdev->dev, "failed to get ahb0_int irq: %d\n", irq); - ret = irq; -@@ -746,7 +761,7 @@ static int dim2_probe(struct platform_device *pdev) - goto err_shutdown_dim; - } - -- irq = platform_get_irq(pdev, 1); -+ irq = platform_get_irq(pdev, MLB_INT_IDX); - if (irq < 0) { - dev_err(&pdev->dev, "failed to get mlb_int irq: %d\n", irq); - ret = irq; -@@ -832,9 +847,9 @@ static int dim2_probe(struct platform_device *pdev) - kthread_stop(dev->netinfo_task); - err_shutdown_dim: - dim_shutdown(); --err_bsp_destroy: -- if (pdata && pdata->destroy) -- pdata->destroy(pdata); -+err_disable_platform: -+ if (dev->disable_platform) -+ dev->disable_platform(pdev); - - return ret; - } -@@ -848,7 +863,6 @@ static int dim2_probe(struct platform_device *pdev) - static int dim2_remove(struct platform_device *pdev) - { - struct dim2_hdm *dev = platform_get_drvdata(pdev); -- struct dim2_platform_data *pdata = pdev->dev.platform_data; - unsigned long flags; - - dim2_sysfs_destroy(&dev->bus); -@@ -859,37 +873,187 @@ static int dim2_remove(struct platform_device *pdev) - dim_shutdown(); - spin_unlock_irqrestore(&dim_lock, flags); - -- if (pdata && pdata->destroy) -- pdata->destroy(pdata); -+ if (dev->disable_platform) -+ dev->disable_platform(pdev); -+ -+ return 0; -+} -+ -+/* platform specific functions [[ */ -+ -+static int fsl_mx6_enable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ int ret; -+ -+ dev->clk = devm_clk_get(&pdev->dev, "mlb"); -+ if (IS_ERR_OR_NULL(dev->clk)) { -+ dev_err(&pdev->dev, "unable to get mlb clock\n"); -+ return -EFAULT; -+ } -+ -+ ret = clk_prepare_enable(dev->clk); -+ if (ret) { -+ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); -+ return ret; -+ } -+ -+ if (dev->clk_speed >= CLK_2048FS) { -+ /* enable pll */ -+ dev->clk_pll = devm_clk_get(&pdev->dev, "pll8_mlb"); -+ if (IS_ERR_OR_NULL(dev->clk_pll)) { -+ dev_err(&pdev->dev, "unable to get mlb pll clock\n"); -+ clk_disable_unprepare(dev->clk); -+ return -EFAULT; -+ } -+ -+ writel(0x888, dev->io_base + 0x38); -+ clk_prepare_enable(dev->clk_pll); -+ } -+ -+ return 0; -+} -+ -+static void fsl_mx6_disable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ -+ if (dev->clk_speed >= CLK_2048FS) -+ clk_disable_unprepare(dev->clk_pll); -+ -+ clk_disable_unprepare(dev->clk); -+} -+ -+static int rcar_h2_enable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ int ret; -+ -+ dev->clk = devm_clk_get(&pdev->dev, NULL); -+ if (IS_ERR(dev->clk)) { -+ dev_err(&pdev->dev, "cannot get clock\n"); -+ return PTR_ERR(dev->clk); -+ } -+ -+ ret = clk_prepare_enable(dev->clk); -+ if (ret) { -+ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); -+ return ret; -+ } -+ -+ if (dev->clk_speed >= CLK_2048FS) { -+ /* enable MLP pll and LVDS drivers */ -+ writel(0x03, dev->io_base + 0x600); -+ /* set bias */ -+ writel(0x888, dev->io_base + 0x38); -+ } else { -+ /* PLL */ -+ writel(0x04, dev->io_base + 0x600); -+ } -+ - -- /* -- * break link to local platform_device_id struct -- * to prevent crash by unload platform device module -- */ -- pdev->id_entry = NULL; -+ /* BBCR = 0b11 */ -+ writel(0x03, dev->io_base + 0x500); -+ writel(0x0002FF02, dev->io_base + 0x508); - - return 0; - } - --static const struct platform_device_id dim2_id[] = { -- { "medialb_dim2" }, -- { }, /* Terminating entry */ -+static void rcar_h2_disable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ -+ clk_disable_unprepare(dev->clk); -+ -+ /* disable PLLs and LVDS drivers */ -+ writel(0x0, dev->io_base + 0x600); -+} -+ -+static int rcar_m3_enable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ u32 enable_512fs = dev->clk_speed == CLK_512FS; -+ int ret; -+ -+ dev->clk = devm_clk_get(&pdev->dev, NULL); -+ if (IS_ERR(dev->clk)) { -+ dev_err(&pdev->dev, "cannot get clock\n"); -+ return PTR_ERR(dev->clk); -+ } -+ -+ ret = clk_prepare_enable(dev->clk); -+ if (ret) { -+ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); -+ return ret; -+ } -+ -+ /* PLL */ -+ writel(0x04, dev->io_base + 0x600); -+ -+ writel(enable_512fs, dev->io_base + 0x604); -+ -+ /* BBCR = 0b11 */ -+ writel(0x03, dev->io_base + 0x500); -+ writel(0x0002FF02, dev->io_base + 0x508); -+ -+ return 0; -+} -+ -+static void rcar_m3_disable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ -+ clk_disable_unprepare(dev->clk); -+ -+ /* disable PLLs and LVDS drivers */ -+ writel(0x0, dev->io_base + 0x600); -+} -+ -+/* ]] platform specific functions */ -+ -+enum dim2_platforms { FSL_MX6, RCAR_H2, RCAR_M3 }; -+ -+static struct dim2_platform_data plat_data[] = { -+ [FSL_MX6] = { .enable = fsl_mx6_enable, .disable = fsl_mx6_disable }, -+ [RCAR_H2] = { .enable = rcar_h2_enable, .disable = rcar_h2_disable }, -+ [RCAR_M3] = { .enable = rcar_m3_enable, .disable = rcar_m3_disable }, -+}; -+ -+static const struct of_device_id dim2_of_match[] = { -+ { -+ .compatible = "fsl,imx6q-mlb150", -+ .data = plat_data + FSL_MX6 -+ }, -+ { -+ .compatible = "renesas,mlp", -+ .data = plat_data + RCAR_H2 -+ }, -+ { -+ .compatible = "rcar,medialb-dim2", -+ .data = plat_data + RCAR_M3 -+ }, -+ { -+ .compatible = "xlnx,axi4-os62420_3pin-1.00.a", -+ }, -+ { -+ .compatible = "xlnx,axi4-os62420_6pin-1.00.a", -+ }, -+ {}, - }; - --MODULE_DEVICE_TABLE(platform, dim2_id); -+MODULE_DEVICE_TABLE(of, dim2_of_match); - - static struct platform_driver dim2_driver = { - .probe = dim2_probe, - .remove = dim2_remove, -- .id_table = dim2_id, - .driver = { - .name = "hdm_dim2", -+ .of_match_table = dim2_of_match, - }, - }; - - module_platform_driver(dim2_driver); - --MODULE_AUTHOR("Jain Roy Ambi "); - MODULE_AUTHOR("Andrey Shvetsov "); - MODULE_DESCRIPTION("MediaLB DIM2 Hardware Dependent Module"); - MODULE_LICENSE("GPL"); -libgit2 0.26.0 diff --git a/meta-agl-profile-demo/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch b/meta-agl-profile-demo/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch deleted file mode 100644 index 1b01fb156..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 839ad403a2d8081a6c15f6fc2836b01919338f3c Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov -Date: Mon, 12 Feb 2018 12:24:37 +0100 -Subject: [PATCH] staging: most: dim2: read clock speed from the device tree - -This implements reading of the clock speed parameter from the device -tree. - -Signed-off-by: Andrey Shvetsov ---- - Documentation/devicetree/bindings/inic/microchip,inic-dim2.txt | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - hdm-dim2/dim2_hdm.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 113 insertions(+), 1 deletion(-) - create mode 100644 Documentation/devicetree/bindings/inic/microchip,inic-dim2.txt - -diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c -index 2dba917..05e1896 100644 ---- a/hdm-dim2/dim2_hdm.c -+++ b/hdm-dim2/dim2_hdm.c -@@ -698,6 +698,42 @@ static void dma_free(struct mbo *mbo, u32 size) - - static const struct of_device_id dim2_of_match[]; - -+static struct { -+ const char *clock_speed; -+ u8 clk_speed; -+} clk_mt[] = { -+ { "256fs", CLK_256FS }, -+ { "512fs", CLK_512FS }, -+ { "1024fs", CLK_1024FS }, -+ { "2048fs", CLK_2048FS }, -+ { "3072fs", CLK_3072FS }, -+ { "4096fs", CLK_4096FS }, -+ { "6144fs", CLK_6144FS }, -+ { "8192fs", CLK_8192FS }, -+}; -+ -+/** -+ * get_dim2_clk_speed - converts string to DIM2 clock speed value -+ * -+ * @clock_speed: string in the format "{NUMBER}fs" -+ * @val: pointer to get one of the CLK_{NUMBER}FS values -+ * -+ * By success stores one of the CLK_{NUMBER}FS in the *val and returns 0, -+ * otherwise returns -EINVAL. -+ */ -+static int get_dim2_clk_speed(const char *clock_speed, u8 *val) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(clk_mt); i++) { -+ if (!strcmp(clock_speed, clk_mt[i].clock_speed)) { -+ *val = clk_mt[i].clk_speed; -+ return 0; -+ } -+ } -+ return -EINVAL; -+} -+ - /* - * dim2_probe - dim2 probe handler - * @pdev: platform device structure -@@ -708,6 +744,7 @@ static const struct of_device_id dim2_of_match[]; - static int dim2_probe(struct platform_device *pdev) - { - const struct dim2_platform_data *pdata; -+ const char *clock_speed; - struct dim2_hdm *dev; - struct resource *res; - int ret, i; -@@ -725,7 +762,18 @@ static int dim2_probe(struct platform_device *pdev) - - platform_set_drvdata(pdev, dev); - -- dev->clk_speed = CLK_4096FS; -+ ret = of_property_read_string(pdev->dev.of_node, -+ "microchip,clock-speed", &clock_speed); -+ if (ret) { -+ dev_err(&pdev->dev, "missing dt property clock-speed\n"); -+ return ret; -+ } -+ -+ ret = get_dim2_clk_speed(clock_speed, &dev->clk_speed); -+ if (ret) { -+ dev_err(&pdev->dev, "bad dt property clock-speed\n"); -+ return ret; -+ } - - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - dev->io_base = devm_ioremap_resource(&pdev->dev, res); --- -libgit2 0.26.0 diff --git a/meta-agl-profile-demo/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch b/meta-agl-profile-demo/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch deleted file mode 100644 index 08cd6f99d..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 756f2f1f90524c2620ed7951e436d13bdb929a6b Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov -Date: Mon, 12 Feb 2018 12:25:37 +0100 -Subject: [PATCH] staging: most: dim2: use device for coherent memory allocation - -On several modern architectures the allocation of coherent memory needs -a device that has the dma_ops properly set. This patch enables use of -the DIM2 platform device for the allocation process. - -Signed-off-by: Andrey Shvetsov ---- - hdm-dim2/dim2_hdm.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c -index 05e1896..1847091 100644 ---- a/hdm-dim2/dim2_hdm.c -+++ b/hdm-dim2/dim2_hdm.c -@@ -688,12 +688,16 @@ static int poison_channel(struct most_interface *most_iface, int ch_idx) - - static void *dma_alloc(struct mbo *mbo, u32 size) - { -- return dma_alloc_coherent(NULL, size, &mbo->bus_address, GFP_KERNEL); -+ struct device *dev = mbo->ifp->dev; -+ -+ return dma_alloc_coherent(dev, size, &mbo->bus_address, GFP_KERNEL); - } - - static void dma_free(struct mbo *mbo, u32 size) - { -- dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address); -+ struct device *dev = mbo->ifp->dev; -+ -+ dma_free_coherent(dev, size, mbo->virt_address, mbo->bus_address); - } - - static const struct of_device_id dim2_of_match[]; -@@ -875,6 +879,7 @@ static int dim2_probe(struct platform_device *pdev) - dev->most_iface.poison_channel = poison_channel; - dev->most_iface.request_netinfo = request_netinfo; - dev->most_iface.extra_attrs = DBR_ATTRS; -+ dev->most_iface.dev = &pdev->dev; - - kobj = most_register_interface(&dev->most_iface); - if (IS_ERR(kobj)) { --- -libgit2 0.26.0 diff --git a/meta-agl-profile-demo/recipes-kernel/most/most.bb b/meta-agl-profile-demo/recipes-kernel/most/most.bb deleted file mode 100644 index 222c8aa18..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/most.bb +++ /dev/null @@ -1,14 +0,0 @@ -DESCRIPTION = "Build MOST driver" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" - -inherit module - -PV = "0.1" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/most;protocol=https;branch=${AGL_BRANCH}" - -S = "${WORKDIR}/git/driver" -SRCREV = "794e6dc552e626eb6dd506baf941873414d9ef73" - -KERNEL_MODULE_AUTOLOAD += "aim_cdev aim_sound aim_network aim_v4l2 hdm_i2c hdm_dim2 hdm_usb mostcore" \ No newline at end of file diff --git a/meta-agl-profile-demo/recipes-kernel/most/most.bbappend b/meta-agl-profile-demo/recipes-kernel/most/most.bbappend deleted file mode 100644 index d85565fc2..000000000 --- a/meta-agl-profile-demo/recipes-kernel/most/most.bbappend +++ /dev/null @@ -1,12 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI_append = " \ - file://0002-src-most-add-auto-conf-feature.patch \ - file://0003-core-remove-kernel-log-for-MBO-status.patch \ - file://0004-most-video-set-device_caps.patch \ - file://0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch \ - file://0006-dim2-fix-startup-sequence.patch \ - file://0007-dim2-use-device-tree.patch \ - file://0008-dim2-read-clock-speed-from-the-device-tree.patch \ - file://0009-dim2-use-device-for-coherent-memory-allocation.patch \ - " diff --git a/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch b/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch deleted file mode 100644 index fcdf9c540..000000000 --- a/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch +++ /dev/null @@ -1,25 +0,0 @@ -From c4b6030f575e38dfc9cca7dfd029d207f3af6a13 Mon Sep 17 00:00:00 2001 -From: "Andre Moreira Magalhaes (andrunko)" -Date: Thu, 5 May 2016 00:01:19 -0300 -Subject: [PATCH] Fix duplicated command line arg -t. - ---- - AudioManagerDaemon/src/main.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp -index 795795d..67c0977 100755 ---- a/AudioManagerDaemon/src/main.cpp -+++ b/AudioManagerDaemon/src/main.cpp -@@ -87,7 +87,7 @@ TCLAP::ValueArg commandPluginDir("l","CommandPluginDir","path for l - TCLAP::ValueArg databasePath ("p","databasePath","path for sqlite database (default is in memory)",false,":memory:","string"); - TCLAP::ValueArg telnetPort ("t","telnetport","The port that is used for telnet",false,DEFAULT_TELNETPORT,"int"); - TCLAP::ValueArg maxConnections ("m","maxConnections","Maximal number of connections for telnet",false,MAX_TELNETCONNECTIONS,"int"); --TCLAP::SwitchArg dbusWrapperTypeBool ("t","dbusType","DbusType to be used by CAmDbusWrapper: if option is selected, DBUS_SYSTEM is used otherwise DBUS_SESSION",false); -+TCLAP::SwitchArg dbusWrapperTypeBool ("T","dbusType","DbusType to be used by CAmDbusWrapper: if option is selected, DBUS_SYSTEM is used otherwise DBUS_SESSION",false); - TCLAP::SwitchArg enableNoDLTDebug ("V","logDlt","print DLT logs to stdout",false); - TCLAP::SwitchArg currentSettings("i","currentSettings","print current settings and exit",false); - TCLAP::SwitchArg daemonizeAM("d","daemonize","daemonize Audiomanager. Better use systemd...",false); --- -2.5.0 - diff --git a/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager/audiomanager.service b/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager/audiomanager.service deleted file mode 100644 index 2210a377b..000000000 --- a/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager/audiomanager.service +++ /dev/null @@ -1,17 +0,0 @@ -# AudioManager systemd service file - -[Unit] -Description=GENIVI AudioManager -Requires=dbus.service -After=dbus.service -Before=pulseaudio.service - -[Service] -Type=notify -ExecStart=/usr/bin/AudioManager -T -Restart=always -TimeoutSec=2 -WatchdogSec=2 - -[Install] -WantedBy=multi-user.target diff --git a/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager_7.4.bb b/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager_7.4.bb deleted file mode 100644 index 15eb36252..000000000 --- a/meta-agl-profile-demo/recipes-multimedia/audiomanager/audiomanager_7.4.bb +++ /dev/null @@ -1,56 +0,0 @@ -DESCRIPTION = "GENIVI Audio Manager" -HOMEPAGE = "http://projects.genivi.org/audio-manager/home" -LICENSE = "MPLv2" -SECTION = "multimedia" -DEPENDS = "dbus dlt-daemon systemd" -LIC_FILES_CHKSUM = "file://LICENCE;md5=f164349b56ed530a6642e9b9f244eec5" - -SRC_URI = " \ - git://github.com/GENIVI/AudioManager.git;protocol=https;branch=master \ - file://audiomanager.service \ -" -RDEPENDS_${PN} = "audiomanager-plugins module-router" -SRCREV = "daf851ee7a41d1b0572c0c95e15f61e427ce97f1" - -S = "${WORKDIR}/git" -inherit cmake systemd -SYSTEMD_PACKAGES = "${PN}" -SYSTEMD_SERVICE_${PN} = "audiomanager.service" -SYSTEMD_AUTO_ENABLE = "enable" - -EXTRA_OECMAKE = " \ - -DWITH_TESTS=OFF \ - -DWITH_DOCUMENTATION=OFF \ - -DWITH_DLT=ON \ - -DWITH_TELNET=OFF \ - -DWITH_SYSTEMD_WATCHDOG=ON \ - -DGLIB_DBUS_TYPES_TOLERANT=ON \ - -DWITH_CAPI_WRAPPER=OFF \ - -DWITH_DBUS_WRAPPER=ON \ - -DWITH_SHARED_UTILITIES=ON \ - -DWITH_SHARED_CORE=ON \ -" - -FILES_${PN} = " \ - ${bindir}/AudioManager \ - ${libdir}/libAudioManagerCore.so.7 \ - ${libdir}/libAudioManagerCore.so.7.4 \ - ${libdir}/libAudioManagerCore.so.7.4.12 \ - ${libdir}/libAudioManagerUtilities.so.7 \ - ${libdir}/libAudioManagerUtilities.so.7.4 \ - ${libdir}/libAudioManagerUtilities.so.7.4.12 \ - ${systemd_unitdir}/audiomanager.service \ -" - -FILES_${PN}-dev = " \ - ${includedir}/audiomanager/* \ - ${libdir}/cmake/* \ - ${libdir}/pkgconfig/* \ - ${libdir}/libAudioManagerCore.so \ - ${libdir}/libAudioManagerUtilities.so \ -" - -do_install_append() { - install -d ${D}${systemd_unitdir}/system/ - install -m 0644 ${WORKDIR}/audiomanager.service ${D}${systemd_unitdir}/system/ -} diff --git a/meta-agl-profile-demo/recipes-qt/.gitkeep b/meta-agl-profile-demo/recipes-qt/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-agl-appfw-native-qt5.bb b/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-agl-appfw-native-qt5.bb deleted file mode 100644 index a22401ffb..000000000 --- a/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-agl-appfw-native-qt5.bb +++ /dev/null @@ -1,32 +0,0 @@ -SUMMARY = "Qt5 for native GUI framework of AGL IVI profile" -DESCRIPTION = "A set of Qt5 packages which required by Native App Fw Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-native-qt5 \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - qtbase \ - qtbase-dev \ - qtbase-plugins \ - qtbase-staticdev \ - qtbase-tools \ - qtdeclarative \ - qtdeclarative-qmlplugins \ - qtdeclarative-tools \ - qtcharts \ - qtwayland \ - qtwayland-plugins \ - qtwayland-tools \ - qtgraphicaleffects-qmlplugins \ - qtvirtualkeyboard \ - " -RDEPENDS_${PN}_checkforkrogoth += "\ - qtwayland-examples \ - " diff --git a/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-agl-demo-qt-examples.bb b/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-agl-demo-qt-examples.bb deleted file mode 100644 index adebabe76..000000000 --- a/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-agl-demo-qt-examples.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "The examples to test Qt5 on AGL Demo Platform" -DESCRIPTION = "A set of packages which contains Qt5 examples" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-demo-qt-examples \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - qt3d-examples \ - qtbase-examples \ - qtconnectivity-examples \ - qtdeclarative-examples \ - qtlocation-examples \ - qtmultimedia-examples \ - qtsensors-examples \ - qtsystems-examples \ - qttools-examples \ - qtwayland-examples \ - qtxmlpatterns-examples \ - " diff --git a/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bbappend b/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bbappend deleted file mode 100644 index 300227e16..000000000 --- a/meta-agl-profile-demo/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bbappend +++ /dev/null @@ -1,23 +0,0 @@ -# add missing dependencies for SDK - -RDEPENDS_${PN} += " \ - qttools-plugins \ - qtquickcontrols-dev \ - qtquickcontrols-qmlplugins \ - qtquickcontrols2-dev \ - qtquickcontrols2-mkspecs \ - qtquickcontrols2-qmlplugins \ -" - -# remove dependency on qtwebkit (still added to SDK by packagegroup-qt5-toolchain-target) -# see SPEC-1159 -RDEPENDS_${PN}_remove = " \ - qtwebkit-dev \ - qtwebkit-mkspecs \ - qtwebkit-qmlplugins \ -" - -# add QtAGLExtras -RDEPENDS_${PN} += " \ - ${@bb.utils.contains("DISTRO_FEATURES", "agl-hmi-framework", " qtaglextras-dev qtaglextras-mkspecs", "",d)} \ -" diff --git a/meta-agl-profile-demo/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb b/meta-agl-profile-demo/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb deleted file mode 100644 index dbeda2d11..000000000 --- a/meta-agl-profile-demo/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "Execute Script QML plugin" -DESCRIPTION = "This provides a simple QML plugin able to execute script file." - -LICENSE = "CLOSED" - -DEPENDS = "qtbase-native qtdeclarative" - -SRC_URI = "git://github.com/ntanibata/qml-execscript-plugin.git;protocol=git;" -SRCREV = "1f05c44cccd8aef485d8df8206c8df4e5ad6f310" -S = "${WORKDIR}/git" - -inherit qmake5 - -EXTRA_OECONF = "--with-moc-dir=${STAGING_BINDIR_NATIVE}/qt5" -QML_LIBDIR = "${libdir}/qt5/qml" - -do_install() { - install -d ${D}${libdir}/qt5/qml/execScript/ - install -m 0755 execScript/*.so ${D}${libdir}/qt5/qml/execScript/ - install -m 0644 ../git/execScript/qmldir ${D}${libdir}/qt5/qml/execScript/ -} - -FILES_${PN} += "${QML_LIBDIR}/execScript/libexecscriptplugin.so" -FILES_${PN} += "${QML_LIBDIR}/execScript/qmldir" -FILES_${PN}-dbg += "${QML_LIBDIR}/execScript/.debug" diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtbase-native_git.bbappend b/meta-agl-profile-demo/recipes-qt/qt5/qtbase-native_git.bbappend deleted file mode 100644 index b7cfe8dce..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtbase-native_git.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -# Backport this fix from meta-qt5: -# https://github.com/meta-qt5/meta-qt5/commit/bf7cdd963008f2d61bc4c324fff2bfafe511fb5f -SRC_URI_remove = "file://0012-qdbuscpp2xml.pro-do-not-build-with-bootstrapped-depe.patch" diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch deleted file mode 100644 index 10a1ddd88..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a4943bb5c7fdf5eb297223d2c3bb02d2271bea48 Mon Sep 17 00:00:00 2001 -From: Risto Avila -Date: Thu, 17 Dec 2015 04:22:53 +0200 -Subject: [PATCH] Force qdbus to make introspect for every findMetaObject - ---- - src/dbus/qdbusintegrator.cpp | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp -index cce8b9c..ae2a9dc 100644 ---- a/src/dbus/qdbusintegrator.cpp -+++ b/src/dbus/qdbusintegrator.cpp -@@ -2512,8 +2512,11 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa - if (!interface.isEmpty()) { - QDBusReadLocker locker(FindMetaObject1Action, this); - QDBusMetaObject *mo = cachedMetaObjects.value(interface, 0); -- if (mo) -- return mo; -+ if (mo) { -+ // service is not unique. Remove cached object to force introspect -+ cachedMetaObjects.remove(interface); -+ delete mo; -+ } - } - - // introspect the target object --- -1.9.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtbase_%.bbappend b/meta-agl-profile-demo/recipes-qt/qt5/qtbase_%.bbappend deleted file mode 100644 index d568b1284..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtbase_%.bbappend +++ /dev/null @@ -1,16 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -DEPENDS_append_koelsch = " libegl" -#DEPENDS_append_porter = " libegl" -DEPENDS_append_porter = " ${@base_conditional('PREFERRED_PROVIDER_virtual/egl', 'mesa', 'mesa', 'libegl', d)}" - -PACKAGECONFIG_WAYLAND = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}" -PACKAGECONFIG_GL = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2', '', d)}" -PACKAGECONFIG_append = " ${PACKAGECONFIG_WAYLAND} icu accessibility" -PACKAGECONFIG_append = " fontconfig" -PACKAGECONFIG_append = " sql-sqlite" - -EXTRA_OECONF_append = "" - -# '-qpa wayland-egl' set wayland-egl as default of platform plagins -PACKAGECONFIG[wayland]="-qpa wayland-egl -no-qpa-platform-guard" diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch deleted file mode 100644 index 007e46763..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch +++ /dev/null @@ -1,80 +0,0 @@ -From ed61f1d932c5c6d38458fcd2e1d5d154383f017e Mon Sep 17 00:00:00 2001 -From: Tasuku Suzuki -Date: Mon, 12 Dec 2016 16:32:47 +0900 -Subject: [PATCH] metadata image support with the "data" URL scheme for QtQuick - -add posterImage, coverArtImage and thumbnailImage to metadata - -Change-Id: I10b9bae10c219ffa41506d6e6b345020790217a6 ---- - .../multimedia/qdeclarativemediametadata_p.h | 33 ++++++++++++++++++++++ - 1 file changed, 33 insertions(+) - -diff --git a/src/imports/multimedia/qdeclarativemediametadata_p.h b/src/imports/multimedia/qdeclarativemediametadata_p.h -index ede7f87..6a6a815 100644 ---- a/src/imports/multimedia/qdeclarativemediametadata_p.h -+++ b/src/imports/multimedia/qdeclarativemediametadata_p.h -@@ -51,6 +51,9 @@ - // We mean it. - // - -+#include -+#include -+#include - #include - #include - #include -@@ -153,6 +156,9 @@ class QDeclarativeMediaMetaData : public QObject - Q_PROPERTY(QVariant gpsProcessingMethod READ gpsProcessingMethod WRITE setGPSProcessingMethod NOTIFY metaDataChanged) - Q_PROPERTY(QVariant gpsAreaInformation READ gpsAreaInformation WRITE setGPSAreaInformation NOTIFY metaDataChanged) - -+ Q_PROPERTY(QVariant posterImage READ posterImage NOTIFY metaDataChanged) -+ Q_PROPERTY(QVariant coverArtImage READ coverArtImage NOTIFY metaDataChanged) -+ Q_PROPERTY(QVariant thumbnailImage READ thumbnailImage NOTIFY metaDataChanged) - public: - QDeclarativeMediaMetaData(QMediaObject *player, QObject *parent = 0) - : QObject(parent) -@@ -425,6 +431,16 @@ QT_WARNING_POP - void setGPSAreaInformation(const QVariant &information) { - setMetaData(QMediaMetaData::GPSAreaInformation, information); } - -+ QVariant posterImage() const { -+ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::PosterImage)); -+ } -+ QVariant coverArtImage() const { -+ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::CoverArtImage)); -+ } -+ QVariant thumbnailImage() const { -+ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::ThumbnailImage)); -+ } -+ - Q_SIGNALS: - void metaDataChanged(); - -@@ -440,6 +456,23 @@ private: - m_writerControl->setMetaData(key, value); - } - -+ QUrl convertImageToUrl(const QVariant &variant) const -+ { -+ if (variant.type() != QVariant::Image) -+ return QUrl(); -+ -+ QImage image = variant.value(); -+ QByteArray data; -+ QBuffer buffer(&data); -+ buffer.open(QBuffer::WriteOnly); -+ QImageWriter png(&buffer, "png"); -+ if (!png.write(image)) { -+ return QUrl(); -+ } -+ buffer.close(); -+ return QUrl(QStringLiteral("data:image/png;base64,") + data.toBase64()); -+ } -+ - QMediaObject *m_mediaObject; - QMetaDataWriterControl *m_writerControl; - bool m_requestedWriterControl; --- -2.7.4 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtmultimedia_%.bbappend b/meta-agl-profile-demo/recipes-qt/qt5/qtmultimedia_%.bbappend deleted file mode 100644 index a06ac2d89..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtmultimedia_%.bbappend +++ /dev/null @@ -1,7 +0,0 @@ -FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" - -PACKAGECONFIG_append = " gstreamer" - -SRC_URI_append = " \ - file://0001-metadata-image-support-with-the-data-URL-scheme-for-.patch \ - " diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtsystems_%.bbappend b/meta-agl-profile-demo/recipes-qt/qt5/qtsystems_%.bbappend deleted file mode 100644 index 550c58d05..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtsystems_%.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -DEPENDS_remove = "bluez4" -# currently Qt5 does not support bluez5 "Nothing PROVIDES 'gconfbluez5'" -#DEPENDS_append = "bluez5" diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0001-Implement-initial-IVI-shell-support-with-shell-integ.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0001-Implement-initial-IVI-shell-support-with-shell-integ.patch deleted file mode 100644 index 9495dcc88..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0001-Implement-initial-IVI-shell-support-with-shell-integ.patch +++ /dev/null @@ -1,693 +0,0 @@ -From f41ceb82b1adb1bae15d36a426bf39ea0e75cb68 Mon Sep 17 00:00:00 2001 -From: Nobuhiko Tanibata -Date: Thu, 5 Nov 2015 20:13:26 +0900 -Subject: [PATCH 1/2] Implement initial IVI-shell support with shell - integration. - -QApplication can set numeric surface ID to its surface by -following steps -------------------------------------------------------- -#include -#include - -int main(int argc, char *argv[]) -{ - QGuiApplication app(argc, argv); - QQuickView view(QUrl(QStringLiteral("qrc:/main.qml"))); - - view.setProperty("IVI-Surface-ID", 8000); - view.show(); - return app.exec(); -} -------------------------------------------------------- - -If QApplication doesn't set the surface ID by itself, the ID is -automatically assigned by qtwayland from 8000. When the application creates -several surfaces, the ID is incremented like 8001,8002,,,,. - -Additionally, qtwayland now supports shell integration Framework. So -The enviromental value QT_WAYLAND_SHELL_INTEGRATION=ivi-shell are required for -Qt application. - -Signed-off-by: Nobuhiko Tanibata ---- - .gitignore | 6 ++ - src/3rdparty/protocol/ivi-application.xml | 99 +++++++++++++++++++ - src/client/client.pro | 3 +- - src/plugins/plugins.pro | 3 +- - .../shellintegration/ivi-shell/ivi-shell.json | 3 + - .../shellintegration/ivi-shell/ivi-shell.pro | 30 ++++++ - src/plugins/shellintegration/ivi-shell/main.cpp | 69 +++++++++++++ - .../ivi-shell/qwaylandivishellintegration.cpp | 109 +++++++++++++++++++++ - .../ivi-shell/qwaylandivishellintegration.h | 79 +++++++++++++++ - .../ivi-shell/qwaylandivisurface.cpp | 71 ++++++++++++++ - .../ivi-shell/qwaylandivisurface_p.h | 76 ++++++++++++++ - src/plugins/shellintegration/shellintegration.pro | 3 + - 12 files changed, 549 insertions(+), 2 deletions(-) - create mode 100644 src/3rdparty/protocol/ivi-application.xml - create mode 100644 src/plugins/shellintegration/ivi-shell/ivi-shell.json - create mode 100644 src/plugins/shellintegration/ivi-shell/ivi-shell.pro - create mode 100644 src/plugins/shellintegration/ivi-shell/main.cpp - create mode 100644 src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp - create mode 100644 src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h - create mode 100644 src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp - create mode 100644 src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h - create mode 100644 src/plugins/shellintegration/shellintegration.pro - -diff --git a/.gitignore b/.gitignore -index b33ca90..924afb2 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -61,6 +61,12 @@ src/plugins/hardwareintegration/*/*/qwayland*.h - src/plugins/hardwareintegration/*/*/*-server-protocol.h - src/plugins/hardwareintegration/*/*/*-client-protocol.h - src/plugins/hardwareintegration/*/*/*-protocol.c -+src/plugins/shellintegration/ivi-shell/qwayland-ivi-application.h -+src/plugins/shellintegration/ivi-shell/qwayland-ivi-application.cpp -+src/plugins/shellintegration/ivi-shell/qwayland-ivi-controller.h -+src/plugins/shellintegration/ivi-shell/qwayland-ivi-controller.cpp -+src/plugins/shellintegration/*/*-client-protocol.h -+src/plugins/shellintegration/*/*-protocol.c - tests/auto/client/tst_client - tests/auto/compositor/tst_compositor - *~ -diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml -new file mode 100644 -index 0000000..61ec7d2 ---- /dev/null -+++ b/src/3rdparty/protocol/ivi-application.xml -@@ -0,0 +1,99 @@ -+ -+ -+ -+ -+ Copyright (C) 2013 DENSO CORPORATION -+ Copyright (c) 2013 BMW Car IT GmbH -+ -+ Permission to use, copy, modify, distribute, and sell this software and -+ its documentation for any purpose is hereby granted without fee, provided -+ that the above copyright notice appear in all copies and that both that -+ copyright notice and this permission notice appear in supporting -+ documentation, and that the name of the copyright holders not be used in -+ advertising or publicity pertaining to distribution of the software -+ without specific, written prior permission. The copyright holders make -+ no representations about the suitability of this software for any -+ purpose. It is provided "as is" without express or implied warranty. -+ -+ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -+ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -+ RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -+ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ -+ -+ -+ -+ -+ -+ -+ This removes link from ivi_id to wl_surface and destroys ivi_surface. -+ The ID, ivi_id, is free and can be used for surface_create again. -+ -+ -+ -+ -+ -+ The configure event asks the client to resize its surface. -+ -+ The size is a hint, in the sense that the client is free to -+ ignore it if it doesn't resize, pick a smaller size (to -+ satisfy aspect ratio or resize in steps of NxM pixels). -+ -+ The client is free to dismiss all but the last configure -+ event it received. -+ -+ The width and height arguments specify the size of the window -+ in surface local coordinates. -+ -+ -+ -+ -+ -+ -+ -+ -+ This interface is exposed as a global singleton. -+ This interface is implemented by servers that provide IVI-style user interfaces. -+ It allows clients to associate a ivi_surface with wl_surface. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ This request gives the wl_surface the role of an IVI Surface. Creating more than -+ one ivi_surface for a wl_surface is not allowed. Note, that this still allows the -+ following example: -+ -+ 1. create a wl_surface -+ 2. create ivi_surface for the wl_surface -+ 3. destroy the ivi_surface -+ 4. create ivi_surface for the wl_surface (with the same or another ivi_id as before) -+ -+ surface_create will create a interface:ivi_surface with numeric ID; ivi_id in -+ ivi compositor. These ivi_ids are defined as unique in the system to identify -+ it inside of ivi compositor. The ivi compositor implements business logic how to -+ set properties of the surface with ivi_id according to status of the system. -+ E.g. a unique ID for Car Navigation application is used for implementing special -+ logic of the application about where it shall be located. -+ The server regards following cases as protocol errors and disconnects the client. -+ - wl_surface already has an nother role. -+ - ivi_id is already assigned to an another wl_surface. -+ -+ If client destroys ivi_surface or wl_surface which is assigne to the ivi_surface, -+ ivi_id which is assigned to the ivi_surface is free for reuse. -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/src/client/client.pro b/src/client/client.pro -index 0c13a4a..ca48cce 100644 ---- a/src/client/client.pro -+++ b/src/client/client.pro -@@ -6,7 +6,8 @@ MODULE=waylandclient - MODULE_PLUGIN_TYPES = \ - wayland-graphics-integration-client \ - wayland-inputdevice-integration \ -- wayland-decoration-client -+ wayland-decoration-client \ -+ wayland-shell-integration - - CONFIG += generated_privates - -diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro -index a1a8a5b..9b66b85 100644 ---- a/src/plugins/plugins.pro -+++ b/src/plugins/plugins.pro -@@ -2,4 +2,5 @@ TEMPLATE=subdirs - SUBDIRS += \ - platforms \ - hardwareintegration \ -- decorations -+ decorations \ -+ shellintegration -diff --git a/src/plugins/shellintegration/ivi-shell/ivi-shell.json b/src/plugins/shellintegration/ivi-shell/ivi-shell.json -new file mode 100644 -index 0000000..c48528e ---- /dev/null -+++ b/src/plugins/shellintegration/ivi-shell/ivi-shell.json -@@ -0,0 +1,3 @@ -+{ -+ "Keys":[ "ivi-shell" ] -+} -diff --git a/src/plugins/shellintegration/ivi-shell/ivi-shell.pro b/src/plugins/shellintegration/ivi-shell/ivi-shell.pro -new file mode 100644 -index 0000000..ac12858 ---- /dev/null -+++ b/src/plugins/shellintegration/ivi-shell/ivi-shell.pro -@@ -0,0 +1,30 @@ -+PLUGIN_TYPE = wayland-shell-integration -+load(qt_plugin) -+ -+QT += waylandclient-private -+CONFIG += wayland-scanner -+ -+!contains(QT_CONFIG, no-pkg-config) { -+ PKGCONFIG += wayland-client wayland-cursor -+ CONFIG += link_pkgconfig -+ contains(QT_CONFIG, glib): PKGCONFIG_PRIVATE += glib-2.0 -+} else { -+ LIBS += -lwayland-client -lwayland-cursor $$QT_LIBS_GLIB -+} -+ -+WAYLANDCLIENTSOURCES += \ -+ ../../../3rdparty/protocol/ivi-application.xml -+ -+include(../../../../include/QtWaylandClient/headers.pri) -+ -+HEADERS += \ -+ qwaylandivishellintegration.h \ -+ qwaylandivisurface_p.h -+ -+SOURCES += \ -+ main.cpp \ -+ qwaylandivishellintegration.cpp \ -+ qwaylandivisurface.cpp -+ -+OTHER_FILES += \ -+ ivi-shell.json -diff --git a/src/plugins/shellintegration/ivi-shell/main.cpp b/src/plugins/shellintegration/ivi-shell/main.cpp -new file mode 100644 -index 0000000..2382ff7 ---- /dev/null -+++ b/src/plugins/shellintegration/ivi-shell/main.cpp -@@ -0,0 +1,69 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2015 ITAGE Corporation, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include -+#include "qwaylandivishellintegration.h" -+ -+QT_BEGIN_NAMESPACE -+ -+namespace QtWaylandClient { -+ -+class QWaylandIviShellIntegrationPlugin : public QWaylandShellIntegrationPlugin -+{ -+ Q_OBJECT -+ Q_PLUGIN_METADATA(IID QWaylandShellIntegrationFactoryInterface_iid FILE "ivi-shell.json") -+ -+public: -+ virtual QWaylandShellIntegration *create(const QString &key, const QStringList ¶mList) Q_DECL_OVERRIDE; -+}; -+ -+QWaylandShellIntegration *QWaylandIviShellIntegrationPlugin::create(const QString &key, const QStringList ¶mList) -+{ -+ Q_UNUSED(key); -+ Q_UNUSED(paramList); -+ return new QWaylandIviShellIntegration(); -+} -+ -+} -+ -+QT_END_NAMESPACE -+ -+#include "main.moc" -diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp -new file mode 100644 -index 0000000..763fafb ---- /dev/null -+++ b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp -@@ -0,0 +1,109 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2015 ITAGE Corporation, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include "qwaylandivishellintegration.h" -+#include "qwaylandivisurface_p.h" -+#include "qwayland-ivi-application.h" -+ -+QT_BEGIN_NAMESPACE -+ -+namespace QtWaylandClient { -+ -+QWaylandIviShellIntegration::QWaylandIviShellIntegration() -+ : m_iviApplication(Q_NULLPTR) -+{ -+} -+ -+QWaylandIviShellIntegration::~QWaylandIviShellIntegration() -+{ -+ delete m_iviApplication; -+} -+ -+bool QWaylandIviShellIntegration::initialize(QWaylandDisplay *display) -+{ -+ display->addRegistryListener(registryIvi, this); -+ -+ return true; -+} -+ -+QWaylandShellSurface *QWaylandIviShellIntegration::createShellSurface(QWaylandWindow *window) -+{ -+ const int IVI_SURFACE_ID = 8000; -+ if (!m_iviApplication) -+ return Q_NULLPTR; -+ -+ uint32_t id = 0; -+ QVariant value = window->property("IVI-Surface-ID"); -+ if (value.isValid()) { -+ id = value.toUInt(); -+ } else { -+ id = IVI_SURFACE_ID + getpid(); -+ } -+ -+ struct ivi_surface *surface = m_iviApplication->surface_create(id, window->object()); -+ -+ return new QWaylandIviSurface(surface, window); -+} -+ -+void QWaylandIviShellIntegration::registryIvi(void *data, -+ struct wl_registry *registry, -+ uint32_t id, -+ const QString &interface, -+ uint32_t version) -+{ -+ QWaylandIviShellIntegration *shell = static_cast(data); -+ -+ if (interface == QStringLiteral("ivi_application")) -+ shell->m_iviApplication = new QtWayland::ivi_application(registry, id, version); -+} -+ -+} -+ -+QT_END_NAMESPACE -diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h -new file mode 100644 -index 0000000..4856ec6 ---- /dev/null -+++ b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h -@@ -0,0 +1,79 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2015 ITAGE Corporation, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDIVIINTEGRATION_H -+#define QWAYLANDIVIINTEGRATION_H -+ -+#include -+ -+QT_BEGIN_NAMESPACE -+ -+namespace QtWayland { -+ struct wl_registry; -+ class ivi_application; -+} -+ -+namespace QtWaylandClient { -+ -+class QWaylandWindow; -+class QWaylandDisplay; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviShellIntegration : public QWaylandShellIntegration -+{ -+public: -+ QWaylandIviShellIntegration(); -+ ~QWaylandIviShellIntegration(); -+ bool initialize(QWaylandDisplay *display); -+ QWaylandShellSurface *createShellSurface(QWaylandWindow *window); -+ -+private: -+ static void registryIvi(void *data, struct wl_registry *registry -+ , uint32_t id, const QString &interface, uint32_t version); -+ -+private: -+ QtWayland::ivi_application *m_iviApplication; -+}; -+ -+} -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDIVIINTEGRATION_H -diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp -new file mode 100644 -index 0000000..3ce3b4e ---- /dev/null -+++ b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp -@@ -0,0 +1,71 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include -+#include -+#include -+#include -+#include "qwaylandivisurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+namespace QtWaylandClient { -+ -+QWaylandIviSurface::QWaylandIviSurface(struct ::ivi_surface *ivi_surface, QWaylandWindow *window) -+ : QtWayland::ivi_surface(ivi_surface) -+ , QWaylandShellSurface(window) -+ , m_window(window) -+{ -+} -+ -+QWaylandIviSurface::~QWaylandIviSurface() -+{ -+ ivi_surface::destroy(); -+} -+ -+void QWaylandIviSurface::ivi_surface_configure(int32_t width, int32_t height) -+{ -+ this->m_window->configure(0, width, height); -+} -+ -+} -+ -+QT_END_NAMESPACE -diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h -new file mode 100644 -index 0000000..d8331c5 ---- /dev/null -+++ b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h -@@ -0,0 +1,76 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDIVISURFACE_H -+#define QWAYLANDIVISURFACE_H -+ -+#include -+ -+#include -+#include -+#include "qwayland-ivi-application.h" -+ -+QT_BEGIN_NAMESPACE -+ -+namespace QtWaylandClient { -+ -+class QWaylandWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface -+ , public QWaylandShellSurface -+{ -+public: -+ QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window); -+ virtual ~QWaylandIviSurface(); -+ -+private: -+ virtual void ivi_surface_configure(int32_t width, int32_t height); -+ -+ QWaylandWindow *m_window; -+ -+ friend class QWaylandWindow; -+}; -+ -+} -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDIVISURFACE_H -diff --git a/src/plugins/shellintegration/shellintegration.pro b/src/plugins/shellintegration/shellintegration.pro -new file mode 100644 -index 0000000..7abd6cc ---- /dev/null -+++ b/src/plugins/shellintegration/shellintegration.pro -@@ -0,0 +1,3 @@ -+TEMPLATE=subdirs -+ -+SUBDIRS += ivi-shell --- -1.8.3.1 diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch deleted file mode 100644 index c91e11704..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 8caaf802a8b42e9bb1d74fc335a571882c75d73e Mon Sep 17 00:00:00 2001 -From: Holger Behrens -Date: Tue, 3 Feb 2015 09:52:52 +0100 -Subject: [meta-ivi-demo][PATCH 1/2] protocol: update 3rd party ivi-application - protocol - -Signed-off-by: Holger Behrens ---- - src/3rdparty/protocol/ivi-application.xml | 31 +++---------------------------- - 1 file changed, 3 insertions(+), 28 deletions(-) - -diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml -index 833fd38..b06ae6c 100644 ---- a/src/3rdparty/protocol/ivi-application.xml -+++ b/src/3rdparty/protocol/ivi-application.xml -@@ -42,34 +42,9 @@ - - - -- -- -- These define all possible warning codes returned by ivi compositor on server-side warnings. -- invalid_wl_surface: -- - wl_surface already has a another role. -- - wl_surface is destroyed before the ivi_surface is destroyed. -- ivi_id_in_use: ivi_id is already assigned by another application. -- -- -- -- -- -- -- -- The ivi compositor encountered warning while processing a request by this -- application. The warning is defined by argument warning_code and optional -- warning_text. If the warning is detected, client shall destroy the ivi_surface -- object. -- -- When a warning event is sent, the compositor turns the ivi_surface object inert. -- The ivi_surface will not deliver further events, all requests on it are ignored -- except 'destroy', and the association to the ivi_id is removed. The client -- should destroy the ivi_surface object. If an inert ivi_surface object is used as -- an argument to any other object's request, that request will [produce a fatal -- error / produce a warning / be ignored]. -- -- -- -+ -+ -+ - - - --- -2.2.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0002-Fix-multiple-QWindow.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0002-Fix-multiple-QWindow.patch deleted file mode 100644 index 177710516..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0002-Fix-multiple-QWindow.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 23534d35587a8b62c945fef1adb29109e5c01bfa Mon Sep 17 00:00:00 2001 -From: Nobuhiko Tanibata -Date: Fri, 6 Nov 2015 09:59:48 +0900 -Subject: [PATCH 2/2] Fix multiple QWindow - -Signed-off-by: Nobuhiko Tanibata ---- - .../ivi-shell/qwaylandivishellintegration.cpp | 16 ++++++++++------ - .../ivi-shell/qwaylandivishellintegration.h | 1 + - 2 files changed, 11 insertions(+), 6 deletions(-) - -diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp -index 763fafb..c42f283 100644 ---- a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp -+++ b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp -@@ -58,6 +58,7 @@ namespace QtWaylandClient { - - QWaylandIviShellIntegration::QWaylandIviShellIntegration() - : m_iviApplication(Q_NULLPTR) -+ , m_surfaceId(0) - { - } - -@@ -79,15 +80,18 @@ QWaylandShellSurface *QWaylandIviShellIntegration::createShellSurface(QWaylandWi - if (!m_iviApplication) - return Q_NULLPTR; - -- uint32_t id = 0; -- QVariant value = window->property("IVI-Surface-ID"); -- if (value.isValid()) { -- id = value.toUInt(); -+ if (m_surfaceId == 0) { -+ QVariant value = window->property("IVI-Surface-ID"); -+ if (value.isValid()) { -+ m_surfaceId = value.toUInt(); -+ } else { -+ m_surfaceId = IVI_SURFACE_ID + getpid(); -+ } - } else { -- id = IVI_SURFACE_ID + getpid(); -+ m_surfaceId++; - } - -- struct ivi_surface *surface = m_iviApplication->surface_create(id, window->object()); -+ struct ivi_surface *surface = m_iviApplication->surface_create(m_surfaceId, window->object()); - - return new QWaylandIviSurface(surface, window); - } -diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h -index 4856ec6..1d10e91 100644 ---- a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h -+++ b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h -@@ -70,6 +70,7 @@ private: - - private: - QtWayland::ivi_application *m_iviApplication; -+ uint32_t m_surfaceId; - }; - - } --- -1.8.3.1 diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch deleted file mode 100644 index 591ef71c5..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 31c60aedf415fd06b5c1aa16fdcef1504b67b96d Mon Sep 17 00:00:00 2001 -From: Holger Behrens -Date: Tue, 3 Feb 2015 09:53:43 +0100 -Subject: [meta-ivi-demo][PATCH 2/2] qwaylandwindow: add support for - IVI-Surface-ID property - -Signed-off-by: Holger Behrens ---- - src/client/qwaylandwindow.cpp | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 45a58f2..781081a 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -100,7 +100,14 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - - if (!(window->flags() & Qt::BypassWindowManagerHint)) { - if (mDisplay->shellIvi()) { -- mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this); -+ unsigned int id = 0; -+ QVariant value = window->property("IVI-Surface-ID"); -+ if (value.isValid()) { -+ id = value.toUInt(); -+ } else { -+ id = IVI_SURFACE_ID + getpid(); -+ } -+ mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(id, object()), this); - } else if (mDisplay->shellXdg()) { - if (window->type() & Qt::Window) { - mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); --- -2.2.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch deleted file mode 100644 index 39296c769..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch +++ /dev/null @@ -1,33 +0,0 @@ -Add qt5wayland.manifest. Removed specfile change from patch. - -Adapted from: - -From 424c23191d81b072255bd7f178ad0ee2c2ea091a Mon Sep 17 00:00:00 2001 -From: Tomasz Olszak -Date: Fri, 25 Apr 2014 14:32:22 +0200 -Subject: [PATCH 10/21] Added manifest file according to smack 3-domain model. - -Bug-Tizen:TIVI-2416 - -Change-Id: I414e245a5c8847bec32ef6a97569d0f06221e1db -Signed-off-by: Tomasz Olszak ---- - packaging/qt5-qtwayland.manifest | 5 +++++ - packaging/qt5-qtwayland.spec | 4 ++++ - 2 files changed, 9 insertions(+) - create mode 100644 packaging/qt5-qtwayland.manifest - -diff --git a/packaging/qt5-qtwayland.manifest b/packaging/qt5-qtwayland.manifest -new file mode 100644 -index 0000000..75b0fa5 ---- /dev/null -+++ b/packaging/qt5-qtwayland.manifest -@@ -0,0 +1,5 @@ -+ -+ -+ -+ -+ --- -1.9.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch deleted file mode 100644 index 6bea62621..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch +++ /dev/null @@ -1,468 +0,0 @@ -From 5cd43dc7519f54f9786fb6c686a2ce1e682d4366 Mon Sep 17 00:00:00 2001 -From: Philippe Coval -Date: Fri, 25 Apr 2014 10:31:42 +0200 -Subject: [PATCH 16/21] xdg-shell: Add xdg-shell protocol file version 1.4.0 - -Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.4.0 - -This file will need to be refreshed on protocol update -until xdg-shell land in wayland's public headers - -Task-number: QTBUG-38633/part/1of2 -Change-Id: I397d863dcfc2223ac6eb234c37dbcd7449ecffff -Reviewed-by: Giulio Camuffo -Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/c2a22eea6716e073875474adf624d8463eba836c -Bug-Tizen: TIVI-3113/part -Signed-off-by: Philippe Coval ---- - src/3rdparty/protocol/xdg-shell.xml | 438 ++++++++++++++++++++++++++++++++++++ - 1 file changed, 438 insertions(+) - create mode 100644 src/3rdparty/protocol/xdg-shell.xml - -diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml -new file mode 100644 -index 0000000..4e5cff8 ---- /dev/null -+++ b/src/3rdparty/protocol/xdg-shell.xml -@@ -0,0 +1,438 @@ -+ -+ -+ -+ -+ Copyright © 2008-2013 Kristian Høgsberg -+ Copyright © 2013 Rafael Antognolli -+ Copyright © 2013 Jasper St. Pierre -+ Copyright © 2010-2013 Intel Corporation -+ -+ Permission to use, copy, modify, distribute, and sell this -+ software and its documentation for any purpose is hereby granted -+ without fee, provided that the above copyright notice appear in -+ all copies and that both that copyright notice and this permission -+ notice appear in supporting documentation, and that the name of -+ the copyright holders not be used in advertising or publicity -+ pertaining to distribution of the software without specific, -+ written prior permission. The copyright holders make no -+ representations about the suitability of this software for any -+ purpose. It is provided "as is" without express or implied -+ warranty. -+ -+ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -+ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN -+ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -+ THIS SOFTWARE. -+ -+ -+ -+ -+ This interface is implemented by servers that provide -+ desktop-style user interfaces. -+ -+ It allows clients to associate a xdg_surface with -+ a basic surface. -+ -+ -+ -+ -+ Use this enum to check the protocol version, and it will be updated -+ automatically. -+ -+ -+ -+ -+ -+ -+ -+ Use this request in order to enable use of this interface. -+ -+ Understand and agree that one is using an unstable interface, -+ that will likely change in the future, breaking the API. -+ -+ -+ -+ -+ -+ -+ Create a shell surface for an existing surface. -+ -+ Only one shell or popup surface can be associated with a given -+ surface. -+ -+ -+ -+ -+ -+ -+ -+ Create a popup surface for an existing surface. -+ -+ Only one shell or popup surface can be associated with a given -+ surface. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ An interface that may be implemented by a wl_surface, for -+ implementations that provide a desktop-style user interface. -+ -+ It provides requests to treat surfaces like windows, allowing to set -+ properties like maximized, fullscreen, minimized, and to move and resize -+ them, and associate metadata like title and app id. -+ -+ On the server side the object is automatically destroyed when -+ the related wl_surface is destroyed. On client side, -+ xdg_surface.destroy() must be called before destroying -+ the wl_surface object. -+ -+ -+ -+ -+ The xdg_surface interface is removed from the wl_surface object -+ that was turned into a xdg_surface with -+ xdg_shell.get_xdg_surface request. The xdg_surface properties, -+ like maximized and fullscreen, are lost. The wl_surface loses -+ its role as a xdg_surface. The wl_surface is unmapped. -+ -+ -+ -+ -+ -+ Setting a surface as transient of another means that it is child -+ of another surface. -+ -+ Child surfaces are stacked above their parents, and will be -+ unmapped if the parent is unmapped too. They should not appear -+ on task bars and alt+tab. -+ -+ -+ -+ -+ -+ -+ Set a short title for the surface. -+ -+ This string may be used to identify the surface in a task bar, -+ window list, or other user interface elements provided by the -+ compositor. -+ -+ The string must be encoded in UTF-8. -+ -+ -+ -+ -+ -+ -+ Set an id for the surface. -+ -+ The app id identifies the general class of applications to which -+ the surface belongs. -+ -+ It should be the ID that appears in the new desktop entry -+ specification, the interface name. -+ -+ -+ -+ -+ -+ -+ A client must respond to a ping event with a pong request or -+ the client may be deemed unresponsive. -+ -+ -+ -+ -+ -+ -+ Ping a client to check if it is receiving events and sending -+ requests. A client is expected to reply with a pong request. -+ -+ -+ -+ -+ -+ -+ Start a pointer-driven move of the surface. -+ -+ This request must be used in response to a button press event. -+ The server may ignore move requests depending on the state of -+ the surface (e.g. fullscreen or maximized). -+ -+ -+ -+ -+ -+ -+ -+ These values are used to indicate which edge of a surface -+ is being dragged in a resize operation. The server may -+ use this information to adapt its behavior, e.g. choose -+ an appropriate cursor image. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Start a pointer-driven resizing of the surface. -+ -+ This request must be used in response to a button press event. -+ The server may ignore resize requests depending on the state of -+ the surface (e.g. fullscreen or maximized). -+ -+ -+ -+ -+ -+ -+ -+ -+ The configure event asks the client to resize its surface. -+ -+ The size is a hint, in the sense that the client is free to -+ ignore it if it doesn't resize, pick a smaller size (to -+ satisfy aspect ratio or resize in steps of NxM pixels). -+ -+ The edges parameter provides a hint about how the surface -+ was resized. The client may use this information to decide -+ how to adjust its content to the new size (e.g. a scrolling -+ area might adjust its content position to leave the viewable -+ content unmoved). Valid edge values are from resize_edge enum. -+ -+ The client is free to dismiss all but the last configure -+ event it received. -+ -+ The width and height arguments specify the size of the window -+ in surface local coordinates. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Set the default output used by this surface when it is first mapped. -+ -+ If this value is NULL (default), it's up to the compositor to choose -+ which display will be used to map this surface. -+ -+ When fullscreen or maximized state are set on this surface, and it -+ wasn't mapped yet, the output set with this method will be used. -+ Otherwise, the output where the surface is currently mapped will be -+ used. -+ -+ -+ -+ -+ -+ -+ Event sent from the compositor to the client requesting that the client -+ goes to a fullscreen state. It's the client job to call set_fullscreen -+ and really trigger the fullscreen state. -+ -+ -+ -+ -+ -+ Event sent from the compositor to the client requesting that the client -+ leaves the fullscreen state. It's the client job to call -+ unset_fullscreen and really leave the fullscreen state. -+ -+ -+ -+ -+ -+ Set the surface as fullscreen. -+ -+ After this request, the compositor should send a configure event -+ informing the output size. -+ -+ This request informs the compositor that the next attached buffer -+ committed will be in a fullscreen state. The buffer size should be the -+ same size as the size informed in the configure event, if the client -+ doesn't want to leave any empty area. -+ -+ In other words: the next attached buffer after set_maximized is the new -+ maximized buffer. And the surface will be positioned at the maximized -+ position on commit. -+ -+ A simple way to synchronize and wait for the correct configure event is -+ to use a wl_display.sync request right after the set_fullscreen -+ request. When the sync callback returns, the last configure event -+ received just before it will be the correct one, and should contain the -+ right size for the surface to maximize. -+ -+ Setting one state won't unset another state. Use -+ xdg_surface.unset_fullscreen for unsetting it. -+ -+ -+ -+ -+ -+ Unset the surface fullscreen state. -+ -+ Same negotiation as set_fullscreen must be used. -+ -+ -+ -+ -+ -+ Event sent from the compositor to the client requesting that the client -+ goes to a maximized state. It's the client job to call set_maximized -+ and really trigger the maximized state. -+ -+ -+ -+ -+ -+ Event sent from the compositor to the client requesting that the client -+ leaves the maximized state. It's the client job to call unset_maximized -+ and really leave the maximized state. -+ -+ -+ -+ -+ -+ Set the surface as maximized. -+ -+ After this request, the compositor will send a configure event -+ informing the output size minus panel and other MW decorations. -+ -+ This request informs the compositor that the next attached buffer -+ committed will be in a maximized state. The buffer size should be the -+ same size as the size informed in the configure event, if the client -+ doesn't want to leave any empty area. -+ -+ In other words: the next attached buffer after set_maximized is the new -+ maximized buffer. And the surface will be positioned at the maximized -+ position on commit. -+ -+ A simple way to synchronize and wait for the correct configure event is -+ to use a wl_display.sync request right after the set_maximized request. -+ When the sync callback returns, the last configure event received just -+ before it will be the correct one, and should contain the right size -+ for the surface to maximize. -+ -+ Setting one state won't unset another state. Use -+ xdg_surface.unset_maximized for unsetting it. -+ -+ -+ -+ -+ -+ Unset the surface maximized state. -+ -+ Same negotiation as set_maximized must be used. -+ -+ -+ -+ -+ -+ Set the surface minimized state. -+ -+ Setting one state won't unset another state. -+ -+ -+ -+ -+ -+ The focused_set event is sent when this surface has been -+ activated. Window decorations should be updated accordingly. -+ -+ -+ -+ -+ -+ The focused_unset event is sent when this surface has been -+ deactivated, because another surface has been activated. Window -+ decorations should be updated accordingly. -+ -+ -+ -+ -+ -+ -+ An interface that may be implemented by a wl_surface, for -+ implementations that provide a desktop-style popups/menus. A popup -+ surface is a transient surface with an added pointer grab. -+ -+ An existing implicit grab will be changed to owner-events mode, -+ and the popup grab will continue after the implicit grab ends -+ (i.e. releasing the mouse button does not cause the popup to be -+ unmapped). -+ -+ The popup grab continues until the window is destroyed or a mouse -+ button is pressed in any other clients window. A click in any of -+ the clients surfaces is reported as normal, however, clicks in -+ other clients surfaces will be discarded and trigger the callback. -+ -+ The x and y arguments specify the locations of the upper left -+ corner of the surface relative to the upper left corner of the -+ parent surface, in surface local coordinates. -+ -+ xdg_popup surfaces are always transient for another surface. -+ -+ -+ -+ -+ The xdg_surface interface is removed from the wl_surface object -+ that was turned into a xdg_surface with -+ xdg_shell.get_xdg_surface request. The xdg_surface properties, -+ like maximized and fullscreen, are lost. The wl_surface loses -+ its role as a xdg_surface. The wl_surface is unmapped. -+ -+ -+ -+ -+ -+ A client must respond to a ping event with a pong request or -+ the client may be deemed unresponsive. -+ -+ -+ -+ -+ -+ -+ Ping a client to check if it is receiving events and sending -+ requests. A client is expected to reply with a pong request. -+ -+ -+ -+ -+ -+ -+ The popup_done event is sent out when a popup grab is broken, -+ that is, when the users clicks a surface that doesn't belong -+ to the client owning the popup surface. -+ -+ -+ -+ -+ -+ --- -1.9.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch deleted file mode 100644 index fe1bb50e8..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch +++ /dev/null @@ -1,1029 +0,0 @@ -From 0edba039247ce888dbb7ff0a93c7b9ec01bac46e Mon Sep 17 00:00:00 2001 -From: Philippe Coval -Date: Wed, 26 Mar 2014 10:16:01 +0100 -Subject: [PATCH 17/21] xdg-shell: Add minimize feature to QWindow using - wayland's xdg-shell - -The feature is disabled by default, -and can be enabled at runtime -by exporting QT_WAYLAND_USE_XDG_SHELL env variable. - -This patch relies on presence of protocol file -which has been imported from weston-1.4.0 sources, -until the xdg-shell is merge into wayland itself. - -Because xdg-shell is experimental, -code fallback to WaylandShell if no XdgShell -but keep in mind those shells are exclusive. - -Since xdg-shell and wayland-shell share most of the API, -some factorization is done by an (empty) abstraction class -to keep the code more readable. - -Despite xdg-shell introduces new popups concept, -they're not used on this change for maitainance purpose. - -Notes: - -* This change depends on presence of xdg-shell protocol file. - -* You can check a demo video - (qt-tizen-cinematic-experience-20140430-rzr) - of the test case at : - https://www.youtube.com/watch?v=pY_XXvKc_0E# - -* Use Super+Tab to show window again if hidden - -Task-number: QTBUG-38633/part/2of2 -Change-Id: I2d7ed85bea1847d82439fdfc893a3dbb2581ffff -Reviewed-by: Giulio Camuffo -Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/768484daaa64bea965bef981a16f59be8db0c190 -Bug-Tizen: TIVI-3113/part -Signed-off-by: Philippe Coval ---- - src/client/client.pro | 5 + - src/client/qwaylanddisplay.cpp | 5 + - src/client/qwaylanddisplay_p.h | 4 + - src/client/qwaylandshellsurface.cpp | 134 ------------------------ - src/client/qwaylandshellsurface_p.h | 40 +++----- - src/client/qwaylandwindow.cpp | 40 ++++++-- - src/client/qwaylandwlshellsurface.cpp | 186 ++++++++++++++++++++++++++++++++++ - src/client/qwaylandwlshellsurface_p.h | 101 ++++++++++++++++++ - src/client/qwaylandxdgsurface.cpp | 173 +++++++++++++++++++++++++++++++ - src/client/qwaylandxdgsurface_p.h | 105 +++++++++++++++++++ - 10 files changed, 625 insertions(+), 168 deletions(-) - create mode 100644 src/client/qwaylandwlshellsurface.cpp - create mode 100644 src/client/qwaylandwlshellsurface_p.h - create mode 100644 src/client/qwaylandxdgsurface.cpp - create mode 100644 src/client/qwaylandxdgsurface_p.h - -diff --git a/src/client/client.pro b/src/client/client.pro -index 10cbd31..9ecf82f 100644 ---- a/src/client/client.pro -+++ b/src/client/client.pro -@@ -41,6 +41,7 @@ WAYLANDCLIENTSOURCES += \ - ../extensions/qtkey-extension.xml \ - ../extensions/windowmanager.xml \ - ../3rdparty/protocol/text.xml \ -+ ../3rdparty/protocol/xdg-shell.xml \ - - SOURCES += qwaylandintegration.cpp \ - qwaylandnativeinterface.cpp \ -@@ -57,6 +58,8 @@ SOURCES += qwaylandintegration.cpp \ - qwaylanddatadevicemanager.cpp \ - qwaylanddatasource.cpp \ - qwaylandshellsurface.cpp \ -+ qwaylandwlshellsurface.cpp \ -+ qwaylandxdgsurface.cpp \ - qwaylandextendedoutput.cpp \ - qwaylandextendedsurface.cpp \ - qwaylandsubsurface.cpp \ -@@ -85,6 +88,8 @@ HEADERS += qwaylandintegration_p.h \ - qwaylanddatadevicemanager_p.h \ - qwaylanddatasource_p.h \ - qwaylandshellsurface_p.h \ -+ qwaylandwlshellsurface_p.h \ -+ qwaylandxdgsurface_p.h \ - qwaylandextendedoutput_p.h \ - qwaylandextendedsurface_p.h \ - qwaylandsubsurface_p.h \ -diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 0b715c0..7f953ad 100644 ---- a/src/client/qwaylanddisplay.cpp -+++ b/src/client/qwaylanddisplay.cpp -@@ -61,6 +61,7 @@ - #include "qwaylandqtkey_p.h" - - #include -+#include - - #include - #include -@@ -206,6 +207,10 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin - mCompositor.init(registry, id); - } else if (interface == QStringLiteral("wl_shm")) { - mShm = static_cast(wl_registry_bind(registry, id, &wl_shm_interface,1)); -+ } else if (interface == QStringLiteral("xdg_shell") -+ && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { -+ mShellXdg.reset(new QtWayland::xdg_shell(registry, id)); -+ mShellXdg->use_unstable_version(QtWayland::xdg_shell::version_current); - } else if (interface == QStringLiteral("wl_shell")){ - mShell.reset(new QtWayland::wl_shell(registry, id)); - } else if (interface == QStringLiteral("wl_seat")) { -diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index 40cb2b2..cf5dfc2 100644 ---- a/src/client/qwaylanddisplay_p.h -+++ b/src/client/qwaylanddisplay_p.h -@@ -51,6 +51,7 @@ - - #include - #include -+#include - - struct wl_cursor_image; - -@@ -78,6 +79,7 @@ namespace QtWayland { - class qt_sub_surface_extension; - class qt_surface_extension; - class wl_text_input_manager; -+ class xdg_shell; - } - - typedef void (*RegistryListener)(void *data, -@@ -113,6 +115,7 @@ public: - QtWayland::wl_compositor *compositor() { return &mCompositor; } - - QtWayland::wl_shell *shell() { return mShell.data(); } -+ QtWayland::xdg_shell *shellXdg() { return mShellXdg.data(); } - - QList inputDevices() const { return mInputDevices; } - QWaylandInputDevice *defaultInputDevice() const; -@@ -168,6 +171,7 @@ private: - QThread *mEventThread; - QWaylandEventThread *mEventThreadObject; - QScopedPointer mShell; -+ QScopedPointer mShellXdg; - QList mScreens; - QList mInputDevices; - QList mRegistryListeners; -diff --git a/src/client/qwaylandshellsurface.cpp b/src/client/qwaylandshellsurface.cpp -index b7a819f..80e509b 100644 ---- a/src/client/qwaylandshellsurface.cpp -+++ b/src/client/qwaylandshellsurface.cpp -@@ -40,137 +40,3 @@ - ****************************************************************************/ - - #include "qwaylandshellsurface_p.h" -- --#include "qwaylanddisplay_p.h" --#include "qwaylandwindow_p.h" --#include "qwaylandinputdevice_p.h" --#include "qwaylanddecoration_p.h" --#include "qwaylandscreen_p.h" -- --#include -- --QT_BEGIN_NAMESPACE -- --QWaylandShellSurface::QWaylandShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window) -- : QtWayland::wl_shell_surface(shell_surface) -- , m_window(window) -- , m_maximized(false) -- , m_fullscreen(false) --{ --} -- --QWaylandShellSurface::~QWaylandShellSurface() --{ -- wl_shell_surface_destroy(object()); --} -- --void QWaylandShellSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) --{ -- resize(inputDevice->wl_seat(), -- inputDevice->serial(), -- edges); --} -- --void QWaylandShellSurface::move(QWaylandInputDevice *inputDevice) --{ -- move(inputDevice->wl_seat(), -- inputDevice->serial()); --} -- --void QWaylandShellSurface::setMaximized() --{ -- m_maximized = true; -- m_size = m_window->window()->geometry().size(); -- set_maximized(0); --} -- --void QWaylandShellSurface::setFullscreen() --{ -- m_fullscreen = true; -- m_size = m_window->window()->geometry().size(); -- set_fullscreen(WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, 0); --} -- --void QWaylandShellSurface::setNormal() --{ -- if (m_fullscreen || m_maximized) { -- m_fullscreen = m_maximized = false; -- setTopLevel(); -- QMargins m = m_window->frameMargins(); -- m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); -- } --} -- --void QWaylandShellSurface::setMinimized() --{ -- // TODO: There's no wl_shell_surface API for this --} -- --void QWaylandShellSurface::setTopLevel() --{ -- set_toplevel(); --} -- --void QWaylandShellSurface::updateTransientParent(QWindow *parent) --{ -- QWaylandWindow *parent_wayland_window = static_cast(parent->handle()); -- if (!parent_wayland_window) -- return; -- -- // set_transient expects a position relative to the parent -- QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -- QWindow *parentWin = m_window->window()->transientParent(); -- transientPos -= parentWin->geometry().topLeft(); -- if (parent_wayland_window->decoration()) { -- transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -- transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -- } -- -- uint32_t flags = 0; -- Qt::WindowFlags wf = m_window->window()->flags(); -- if (wf.testFlag(Qt::ToolTip) -- || wf.testFlag(Qt::WindowTransparentForInput)) -- flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE; -- -- set_transient(parent_wayland_window->object(), -- transientPos.x(), -- transientPos.y(), -- flags); --} -- --void QWaylandShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial) --{ -- QWaylandWindow *parent_wayland_window = parent; -- if (!parent_wayland_window) -- return; -- -- // set_popup expects a position relative to the parent -- QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -- transientPos -= parent_wayland_window->geometry().topLeft(); -- if (parent_wayland_window->decoration()) { -- transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -- transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -- } -- -- set_popup(device->wl_seat(), serial, parent_wayland_window->object(), -- transientPos.x(), transientPos.y(), 0); --} -- --void QWaylandShellSurface::shell_surface_ping(uint32_t serial) --{ -- pong(serial); --} -- --void QWaylandShellSurface::shell_surface_configure(uint32_t edges, -- int32_t width, -- int32_t height) --{ -- m_window->configure(edges, width, height); --} -- --void QWaylandShellSurface::shell_surface_popup_done() --{ -- QCoreApplication::postEvent(m_window->window(), new QCloseEvent()); --} -- --QT_END_NAMESPACE -diff --git a/src/client/qwaylandshellsurface_p.h b/src/client/qwaylandshellsurface_p.h -index 2477c3f..2f59f60 100644 ---- a/src/client/qwaylandshellsurface_p.h -+++ b/src/client/qwaylandshellsurface_p.h -@@ -55,39 +55,25 @@ class QWaylandWindow; - class QWaylandInputDevice; - class QWindow; - --class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface : public QtWayland::wl_shell_surface -+class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface - { - public: -- QWaylandShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window); -- ~QWaylandShellSurface(); -+ virtual ~QWaylandShellSurface() {} -+ virtual void resize(QWaylandInputDevice * /*inputDevice*/, enum wl_shell_surface_resize /*edges*/) -+ {} - -- using QtWayland::wl_shell_surface::resize; -- void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges); -- -- using QtWayland::wl_shell_surface::move; -- void move(QWaylandInputDevice *inputDevice); -+ virtual void move(QWaylandInputDevice * /*inputDevice*/) {} -+ virtual void setTitle(const QString & /*title*/) {} -+ virtual void setAppId(const QString & /*appId*/) {} - - private: -- void setMaximized(); -- void setFullscreen(); -- void setNormal(); -- void setMinimized(); -- -- void setTopLevel(); -- void updateTransientParent(QWindow *parent); -- void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial); -- -- QWaylandWindow *m_window; -- bool m_maximized; -- bool m_fullscreen; -- QSize m_size; -- -- void shell_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; -- void shell_surface_configure(uint32_t edges, -- int32_t width, -- int32_t height) Q_DECL_OVERRIDE; -- void shell_surface_popup_done() Q_DECL_OVERRIDE; -+ virtual void setMaximized() {} -+ virtual void setFullscreen() {} -+ virtual void setNormal() {} -+ virtual void setMinimized() {} - -+ virtual void setTopLevel() {} -+ virtual void updateTransientParent(QWindow * /*parent*/) {} - friend class QWaylandWindow; - }; - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 920c977..3fb3a49 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -46,6 +46,8 @@ - #include "qwaylandinputdevice_p.h" - #include "qwaylandscreen_p.h" - #include "qwaylandshellsurface_p.h" -+#include "qwaylandwlshellsurface_p.h" -+#include "qwaylandxdgsurface_p.h" - #include "qwaylandextendedsurface_p.h" - #include "qwaylandsubsurface_p.h" - #include "qwaylanddecoration_p.h" -@@ -92,8 +94,16 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - static WId id = 1; - mWindowId = id++; - -- if (mDisplay->shell() && window->type() & Qt::Window && !(window->flags() & Qt::BypassWindowManagerHint)) -- mShellSurface = new QWaylandShellSurface(mDisplay->shell()->get_shell_surface(object()), this); -+ if (!(window->flags() & Qt::BypassWindowManagerHint)) { -+ if (mDisplay->shellXdg()) { -+ if (window->type() & Qt::Window) { -+ mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); -+ } -+ } else if (mDisplay->shell() && window->type() & Qt::Window) { -+ mShellSurface = new QWaylandWlShellSurface(mDisplay->shell()->get_shell_surface(object()), this); -+ } -+ } -+ - if (mDisplay->windowExtension()) - mExtendedWindow = new QWaylandExtendedSurface(this, mDisplay->windowExtension()->get_extended_surface(object())); - if (mDisplay->subSurfaceExtension()) -@@ -101,12 +111,12 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - - if (mShellSurface) { - // Set initial surface title -- mShellSurface->set_title(window->title()); -+ mShellSurface->setTitle(window->title()); - - // Set surface class to the .desktop file name (obtained from executable name) - QFileInfo exeFileInfo(qApp->applicationFilePath()); - QString className = exeFileInfo.baseName() + QLatin1String(".desktop"); -- mShellSurface->set_class(className); -+ mShellSurface->setAppId(className); - } - - if (QPlatformWindow::parent() && mSubSurfaceWindow) { -@@ -170,7 +180,7 @@ void QWaylandWindow::setParent(const QPlatformWindow *parent) - void QWaylandWindow::setWindowTitle(const QString &title) - { - if (mShellSurface) { -- mShellSurface->set_title(title); -+ mShellSurface->setTitle(title); - } - - if (mWindowDecoration && window()->isVisible()) -@@ -212,8 +222,10 @@ void QWaylandWindow::setVisible(bool visible) - mMouseDevice = parent->mMouseDevice; - mMouseSerial = parent->mMouseSerial; - -- if (mMouseDevice) -- mShellSurface->setPopup(transientParent(), mMouseDevice, mMouseSerial); -+ QWaylandWlShellSurface *wlshellSurface = dynamic_cast(mShellSurface); -+ if (mMouseDevice && wlshellSurface) { -+ wlshellSurface->setPopup(transientParent(), mMouseDevice, mMouseSerial); -+ } - } - - if (!mSentInitialResize) { -@@ -428,6 +440,20 @@ void QWaylandWindow::setWindowFlags(Qt::WindowFlags flags) - - bool QWaylandWindow::createDecoration() - { -+ // so far only xdg-shell support this "unminimize" trick, may be moved elsewhere -+ if (mState == Qt::WindowMinimized) { -+ QWaylandXdgSurface *xdgSurface = dynamic_cast(mShellSurface); -+ if ( xdgSurface ) { -+ if (xdgSurface->isFullscreen()) { -+ setWindowStateInternal(Qt::WindowFullScreen); -+ } else if (xdgSurface->isMaximized()) { -+ setWindowStateInternal(Qt::WindowMaximized); -+ } else { -+ setWindowStateInternal(Qt::WindowNoState); -+ } -+ } -+ } -+ - static bool disableWaylandDecorations = !qgetenv("QT_WAYLAND_DISABLE_WINDOWDECORATION").isEmpty(); - if (disableWaylandDecorations) - return false; -diff --git a/src/client/qwaylandwlshellsurface.cpp b/src/client/qwaylandwlshellsurface.cpp -new file mode 100644 -index 0000000..4b73ec2 ---- /dev/null -+++ b/src/client/qwaylandwlshellsurface.cpp -@@ -0,0 +1,186 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandwlshellsurface_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandWlShellSurface::QWaylandWlShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window) -+ : QtWayland::wl_shell_surface(shell_surface) -+ , m_window(window) -+ , m_maximized(false) -+ , m_fullscreen(false) -+{ -+} -+ -+QWaylandWlShellSurface::~QWaylandWlShellSurface() -+{ -+ wl_shell_surface_destroy(object()); -+} -+ -+void QWaylandWlShellSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) -+{ -+ resize(inputDevice->wl_seat(), -+ inputDevice->serial(), -+ edges); -+} -+ -+void QWaylandWlShellSurface::move(QWaylandInputDevice *inputDevice) -+{ -+ move(inputDevice->wl_seat(), -+ inputDevice->serial()); -+} -+ -+void QWaylandWlShellSurface::setTitle(const QString & title) -+{ -+ return QtWayland::wl_shell_surface::set_title(title); -+} -+ -+void QWaylandWlShellSurface::setAppId(const QString & appId) -+{ -+ return QtWayland::wl_shell_surface::set_class(appId); -+} -+ -+void QWaylandWlShellSurface::setMaximized() -+{ -+ m_maximized = true; -+ m_size = m_window->window()->geometry().size(); -+ set_maximized(0); -+} -+ -+void QWaylandWlShellSurface::setFullscreen() -+{ -+ m_fullscreen = true; -+ m_size = m_window->window()->geometry().size(); -+ set_fullscreen(WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, 0); -+} -+ -+void QWaylandWlShellSurface::setNormal() -+{ -+ if (m_fullscreen || m_maximized) { -+ m_fullscreen = m_maximized = false; -+ setTopLevel(); -+ QMargins m = m_window->frameMargins(); -+ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); -+ } -+} -+ -+void QWaylandWlShellSurface::setMinimized() -+{ -+ // TODO: There's no wl_shell_surface API for this -+} -+ -+void QWaylandWlShellSurface::setTopLevel() -+{ -+ set_toplevel(); -+} -+ -+void QWaylandWlShellSurface::updateTransientParent(QWindow *parent) -+{ -+ QWaylandWindow *parent_wayland_window = static_cast(parent->handle()); -+ if (!parent_wayland_window) -+ return; -+ -+ // set_transient expects a position relative to the parent -+ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -+ QWindow *parentWin = m_window->window()->transientParent(); -+ transientPos -= parentWin->geometry().topLeft(); -+ if (parent_wayland_window->decoration()) { -+ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -+ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -+ } -+ -+ uint32_t flags = 0; -+ Qt::WindowFlags wf = m_window->window()->flags(); -+ if (wf.testFlag(Qt::ToolTip) -+ || wf.testFlag(Qt::WindowTransparentForInput)) -+ flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE; -+ -+ set_transient(parent_wayland_window->object(), -+ transientPos.x(), -+ transientPos.y(), -+ flags); -+} -+ -+void QWaylandWlShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial) -+{ -+ QWaylandWindow *parent_wayland_window = parent; -+ if (!parent_wayland_window) -+ return; -+ -+ // set_popup expects a position relative to the parent -+ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -+ transientPos -= parent_wayland_window->geometry().topLeft(); -+ if (parent_wayland_window->decoration()) { -+ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -+ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -+ } -+ -+ set_popup(device->wl_seat(), serial, parent_wayland_window->object(), -+ transientPos.x(), transientPos.y(), 0); -+} -+ -+void QWaylandWlShellSurface::shell_surface_ping(uint32_t serial) -+{ -+ pong(serial); -+} -+ -+void QWaylandWlShellSurface::shell_surface_configure(uint32_t edges, -+ int32_t width, -+ int32_t height) -+{ -+ m_window->configure(edges, width, height); -+} -+ -+void QWaylandWlShellSurface::shell_surface_popup_done() -+{ -+ QCoreApplication::postEvent(m_window->window(), new QCloseEvent()); -+} -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandwlshellsurface_p.h b/src/client/qwaylandwlshellsurface_p.h -new file mode 100644 -index 0000000..d02bb7b ---- /dev/null -+++ b/src/client/qwaylandwlshellsurface_p.h -@@ -0,0 +1,101 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDWLSHELLSURFACE_H -+#define QWAYLANDWLSHELLSURFACE_H -+ -+#include -+ -+#include -+ -+#include -+#include -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandWlShellSurface : public QtWayland::wl_shell_surface -+ , public QWaylandShellSurface -+{ -+public: -+ QWaylandWlShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window); -+ virtual ~QWaylandWlShellSurface(); -+ -+ using QtWayland::wl_shell_surface::resize; -+ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; -+ -+ using QtWayland::wl_shell_surface::move; -+ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; -+ -+ void setTitle(const QString & title) Q_DECL_OVERRIDE; -+ void setAppId(const QString &appId) Q_DECL_OVERRIDE; -+ -+private: -+ void setMaximized() Q_DECL_OVERRIDE; -+ void setFullscreen() Q_DECL_OVERRIDE; -+ void setNormal() Q_DECL_OVERRIDE; -+ void setMinimized() Q_DECL_OVERRIDE; -+ -+ void setTopLevel() Q_DECL_OVERRIDE; -+ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; -+ void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial); -+ -+ QWaylandWindow *m_window; -+ bool m_maximized; -+ bool m_fullscreen; -+ QSize m_size; -+ -+ void shell_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; -+ void shell_surface_configure(uint32_t edges, -+ int32_t width, -+ int32_t height) Q_DECL_OVERRIDE; -+ void shell_surface_popup_done() Q_DECL_OVERRIDE; -+ -+ friend class QWaylandWindow; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDSHELLSURFACE_H -diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp -new file mode 100644 -index 0000000..1b8affa ---- /dev/null -+++ b/src/client/qwaylandxdgsurface.cpp -@@ -0,0 +1,173 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandxdgsurface_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandXdgSurface::QWaylandXdgSurface(struct ::xdg_surface *xdg_surface, QWaylandWindow *window) -+ : QtWayland::xdg_surface(xdg_surface) -+ , m_window(window) -+ , m_maximized(false) -+ , m_minimized(false) -+ , m_fullscreen(false) -+{ -+} -+ -+QWaylandXdgSurface::~QWaylandXdgSurface() -+{ -+ xdg_surface_destroy(object()); -+} -+ -+void QWaylandXdgSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) -+{ -+ // May need some conversion if types get incompatibles, ATM they're identical -+ enum resize_edge const * const arg = reinterpret_cast(&edges); -+ resize(inputDevice, *arg); -+} -+ -+void QWaylandXdgSurface::resize(QWaylandInputDevice *inputDevice, enum resize_edge edges) -+{ -+ resize(inputDevice->wl_seat(), -+ inputDevice->serial(), -+ edges); -+} -+ -+void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice) -+{ -+ move(inputDevice->wl_seat(), -+ inputDevice->serial()); -+} -+ -+void QWaylandXdgSurface::setMaximized() -+{ -+ m_maximized = true; -+ m_size = m_window->window()->geometry().size(); -+ set_maximized(); -+} -+ -+void QWaylandXdgSurface::setFullscreen() -+{ -+ m_fullscreen = true; -+ m_size = m_window->window()->geometry().size(); -+ set_fullscreen(); -+} -+ -+void QWaylandXdgSurface::setNormal() -+{ -+ if (m_fullscreen || m_maximized || m_minimized) { -+ if (m_maximized) { unset_maximized(); } -+ if (m_fullscreen) { unset_fullscreen(); } -+ -+ m_fullscreen = m_maximized = m_minimized = false; -+ setTopLevel(); -+ QMargins m = m_window->frameMargins(); -+ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); -+ } -+} -+ -+void QWaylandXdgSurface::setMinimized() -+{ -+ m_minimized = true; -+ m_size = m_window->window()->geometry().size(); -+ set_minimized(); -+} -+ -+void QWaylandXdgSurface::setTopLevel() -+{ -+ // There's no xdg_shell_surface API for this, ignoring -+} -+ -+void QWaylandXdgSurface::updateTransientParent(QWindow *parent) -+{ -+ QWaylandWindow *parent_wayland_window = static_cast(parent->handle()); -+ if (!parent_wayland_window) -+ return; -+ -+ // set_transient expects a position relative to the parent -+ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -+ QWindow *parentWin = m_window->window()->transientParent(); -+ transientPos -= parentWin->geometry().topLeft(); -+ if (parent_wayland_window->decoration()) { -+ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -+ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -+ } -+ -+ uint32_t flags = 0; -+ Qt::WindowFlags wf = m_window->window()->flags(); -+ if (wf.testFlag(Qt::ToolTip) -+ || wf.testFlag(Qt::WindowTransparentForInput)) -+ flags |= XDG_SURFACE_SET_TRANSIENT_FOR; -+ -+ set_transient_for(parent_wayland_window->object()); -+} -+ -+void QWaylandXdgSurface::setTitle(const QString & title) -+{ -+ return QtWayland::xdg_surface::set_title(title); -+} -+ -+void QWaylandXdgSurface::setAppId(const QString & appId) -+{ -+ return QtWayland::xdg_surface::set_app_id(appId); -+} -+ -+void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial) -+{ -+ pong(serial); -+} -+ -+void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width, -+ int32_t height) -+{ -+ m_window->configure(edges, width, height); -+} -+ -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h -new file mode 100644 -index 0000000..744d3f3 ---- /dev/null -+++ b/src/client/qwaylandxdgsurface_p.h -@@ -0,0 +1,105 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDXDGSURFACE_H -+#define QWAYLANDXDGSURFACE_H -+ -+#include -+ -+#include -+ -+#include -+#include -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgSurface : public QtWayland::xdg_surface -+ , public QWaylandShellSurface -+{ -+public: -+ QWaylandXdgSurface(struct ::xdg_surface *shell_surface, QWaylandWindow *window); -+ virtual ~QWaylandXdgSurface(); -+ -+ using QtWayland::xdg_surface::resize; -+ void resize(QWaylandInputDevice *inputDevice, enum resize_edge edges); -+ -+ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; -+ -+ using QtWayland::xdg_surface::move; -+ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; -+ -+ void setTitle(const QString &title) Q_DECL_OVERRIDE; -+ void setAppId(const QString &appId) Q_DECL_OVERRIDE; -+ -+ bool isFullscreen() const { return m_fullscreen; } -+ bool isMaximized() const { return m_maximized; } -+ -+private: -+ void setMaximized() Q_DECL_OVERRIDE; -+ void setFullscreen() Q_DECL_OVERRIDE; -+ void setNormal() Q_DECL_OVERRIDE; -+ void setMinimized() Q_DECL_OVERRIDE; -+ -+ void setTopLevel() Q_DECL_OVERRIDE; -+ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; -+ -+private: -+ QWaylandWindow *m_window; -+ bool m_maximized; -+ bool m_minimized; -+ bool m_fullscreen; -+ QSize m_size; -+ -+ void xdg_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; -+ void xdg_surface_configure(uint32_t edges, -+ int32_t width, -+ int32_t height) Q_DECL_OVERRIDE; -+ friend class QWaylandWindow; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDXDGSURFACE_H --- -1.9.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch deleted file mode 100644 index 8f0425a76..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch +++ /dev/null @@ -1,772 +0,0 @@ -From c4219cca0febd7119e0bec776fdc2877b3448e0b Mon Sep 17 00:00:00 2001 -From: Philippe Coval -Date: Tue, 10 Jun 2014 16:22:17 +0200 -Subject: [PATCH 19/21] xdg-shell: upgrade to support current version - (weston-1.5.0) - -The protocol file is a raw copy of - -Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.5.0 - -Task-number: QTBUG-38633/related -Reviewed-by: Giulio Camuffo -Reviewed-by: Philippe Coval -Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/4bac130b97fbaa565aa9883eb302557ef0185d50 -Change-Id: I41ca2f89c09a8b6348ce2fbf6d59f44b4c81ffff ---- - src/3rdparty/protocol/xdg-shell.xml | 288 ++++++++++++++++++------------------ - src/client/client.pro | 2 + - src/client/qwaylanddisplay.cpp | 10 +- - src/client/qwaylanddisplay_p.h | 5 +- - src/client/qwaylandxdgshell.cpp | 77 ++++++++++ - src/client/qwaylandxdgshell_p.h | 73 +++++++++ - src/client/qwaylandxdgsurface.cpp | 60 ++++++-- - src/client/qwaylandxdgsurface_p.h | 11 +- - 8 files changed, 364 insertions(+), 162 deletions(-) - create mode 100644 src/client/qwaylandxdgshell.cpp - create mode 100644 src/client/qwaylandxdgshell_p.h - -diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml -index 4e5cff8..79a2831 100644 ---- a/src/3rdparty/protocol/xdg-shell.xml -+++ b/src/3rdparty/protocol/xdg-shell.xml -@@ -40,19 +40,22 @@ - - - -- Use this enum to check the protocol version, and it will be updated -- automatically. -+ The 'current' member of this enum gives the version of the -+ protocol. Implementations can compare this to the version -+ they implement using static_assert to ensure the protocol and -+ implementation versions match. - -- -+ - - - - - -- Use this request in order to enable use of this interface. -- -- Understand and agree that one is using an unstable interface, -- that will likely change in the future, breaking the API. -+ Negotiate the unstable version of the interface. This -+ mechanism is in place to ensure client and server agree on the -+ unstable versions of the protocol that they speak or exit -+ cleanly if they don't agree. This request will go away once -+ the xdg-shell protocol is stable. - - - -@@ -84,6 +87,28 @@ - - - -+ -+ -+ -+ The ping event asks the client if it's still alive. Pass the -+ serial specified in the event back to the compositor by sending -+ a "pong" request back with the specified serial. -+ -+ Compositors can use this to determine if the client is still -+ alive. It's unspecified what will happen if the client doesn't -+ respond to the ping request, or in what timeframe. Clients should -+ try to respond in a reasonable amount of time. -+ -+ -+ -+ -+ -+ -+ A client must respond to a ping event with a pong request or -+ the client may be deemed unresponsive. -+ -+ -+ - - - -@@ -124,6 +149,32 @@ - - - -+ -+ -+ This tells the compositor what the visible size of the window -+ should be, so it can use it to determine what borders to use for -+ constrainment and alignment. -+ -+ CSD often has invisible areas for decoration purposes, like drop -+ shadows. These "shadow" drawings need to be subtracted out of the -+ normal boundaries of the window when computing where to place -+ windows (e.g. to set this window so it's centered on top of another, -+ or to put it to the left or right of the screen.) -+ -+ This value should change as little as possible at runtime, to -+ prevent flicker. -+ -+ This value is also ignored when the window is maximized or -+ fullscreen, and assumed to be 0. -+ -+ If never called, this value is assumed to be 0. -+ -+ -+ -+ -+ -+ -+ - - - Set a short title for the surface. -@@ -150,22 +201,6 @@ - - - -- -- -- A client must respond to a ping event with a pong request or -- the client may be deemed unresponsive. -- -- -- -- -- -- -- Ping a client to check if it is receiving events and sending -- requests. A client is expected to reply with a pong request. -- -- -- -- - - - Start a pointer-driven move of the surface. -@@ -217,12 +252,6 @@ - ignore it if it doesn't resize, pick a smaller size (to - satisfy aspect ratio or resize in steps of NxM pixels). - -- The edges parameter provides a hint about how the surface -- was resized. The client may use this information to decide -- how to adjust its content to the new size (e.g. a scrolling -- area might adjust its content position to leave the viewable -- content unmoved). Valid edge values are from resize_edge enum. -- - The client is free to dismiss all but the last configure - event it received. - -@@ -230,7 +259,6 @@ - in surface local coordinates. - - -- - - - -@@ -250,128 +278,122 @@ - - - -- -- -- Event sent from the compositor to the client requesting that the client -- goes to a fullscreen state. It's the client job to call set_fullscreen -- and really trigger the fullscreen state. -- -- -- -- -- -- Event sent from the compositor to the client requesting that the client -- leaves the fullscreen state. It's the client job to call -- unset_fullscreen and really leave the fullscreen state. -- -- -+ -+ -+ The different state values used on the surface. This is designed for -+ state values like maximized, fullscreen. It is paired with the -+ request_change_state event to ensure that both the client and the -+ compositor setting the state can be synchronized. - -- -- -- Set the surface as fullscreen. -+ States set in this way are double-buffered. They will get applied on -+ the next commit. - -- After this request, the compositor should send a configure event -- informing the output size. -+ Desktop environments may extend this enum by taking up a range of -+ values and documenting the range they chose in this description. -+ They are not required to document the values for the range that they -+ chose. Ideally, any good extensions from a desktop environment should -+ make its way into standardization into this enum. - -- This request informs the compositor that the next attached buffer -- committed will be in a fullscreen state. The buffer size should be the -- same size as the size informed in the configure event, if the client -- doesn't want to leave any empty area. -+ The current reserved ranges are: - -- In other words: the next attached buffer after set_maximized is the new -- maximized buffer. And the surface will be positioned at the maximized -- position on commit. -- -- A simple way to synchronize and wait for the correct configure event is -- to use a wl_display.sync request right after the set_fullscreen -- request. When the sync callback returns, the last configure event -- received just before it will be the correct one, and should contain the -- right size for the surface to maximize. -- -- Setting one state won't unset another state. Use -- xdg_surface.unset_fullscreen for unsetting it. -+ 0x0000 - 0x0FFF: xdg-shell core values, documented below. -+ 0x1000 - 0x1FFF: GNOME - -- -+ -+ A non-zero value indicates the surface is maximized. Otherwise, -+ the surface is unmaximized. -+ -+ -+ A non-zero value indicates the surface is fullscreen. Otherwise, -+ the surface is not fullscreen. -+ -+ - -- -- -- Unset the surface fullscreen state. -+ -+ -+ This asks the compositor to change the state. If the compositor wants -+ to change the state, it will send a change_state event with the same -+ state_type, value, and serial, and the event flow continues as if it -+ it was initiated by the compositor. - -- Same negotiation as set_fullscreen must be used. -+ If the compositor does not want to change the state, it will send a -+ change_state to the client with the old value of the state. - -+ -+ -+ -+ This serial is so the client can know which change_state event corresponds -+ to which request_change_state request it sent out. -+ - - -- -- -- Event sent from the compositor to the client requesting that the client -- goes to a maximized state. It's the client job to call set_maximized -- and really trigger the maximized state. -+ -+ -+ This event tells the client to change a surface's state. The client -+ should respond with an ack_change_state request to the compositor to -+ guarantee that the compositor knows that the client has seen it. - -- - -- -- -- Event sent from the compositor to the client requesting that the client -- leaves the maximized state. It's the client job to call unset_maximized -- and really leave the maximized state. -- -+ -+ -+ - - -- -- -- Set the surface as maximized. -- -- After this request, the compositor will send a configure event -- informing the output size minus panel and other MW decorations. -- -- This request informs the compositor that the next attached buffer -- committed will be in a maximized state. The buffer size should be the -- same size as the size informed in the configure event, if the client -- doesn't want to leave any empty area. -+ -+ -+ When a change_state event is received, a client should then ack it -+ using the ack_change_state request to ensure that the compositor -+ knows the client has seen the event. - -- In other words: the next attached buffer after set_maximized is the new -- maximized buffer. And the surface will be positioned at the maximized -- position on commit. -+ By this point, the state is confirmed, and the next attach should -+ contain the buffer drawn for the new state value. - -- A simple way to synchronize and wait for the correct configure event is -- to use a wl_display.sync request right after the set_maximized request. -- When the sync callback returns, the last configure event received just -- before it will be the correct one, and should contain the right size -- for the surface to maximize. -- -- Setting one state won't unset another state. Use -- xdg_surface.unset_maximized for unsetting it. -+ The values here need to be the same as the values in the cooresponding -+ change_state event. - -+ -+ -+ - - -- -- -- Unset the surface maximized state. -- -- Same negotiation as set_maximized must be used. -+ -+ -+ Minimize the surface. - - - -- -- -- Set the surface minimized state. -- -- Setting one state won't unset another state. -+ -+ -+ The activated_set event is sent when this surface has been -+ activated, which means that the surface has user attention. -+ Window decorations should be updated accordingly. You should -+ not use this event for anything but the style of decorations -+ you display, use wl_keyboard.enter and wl_keyboard.leave for -+ determining keyboard focus. - -- -+ - -- -- -- The focused_set event is sent when this surface has been -- activated. Window decorations should be updated accordingly. -+ -+ -+ The deactivate event is sent when this surface has been -+ deactivated, which means that the surface lost user attention. -+ Window decorations should be updated accordingly. You should -+ not use this event for anything but the style of decorations -+ you display, use wl_keyboard.enter and wl_keyboard.leave for -+ determining keyboard focus. - - - -- -- -- The focused_unset event is sent when this surface has been -- deactivated, because another surface has been activated. Window -- decorations should be updated accordingly. -+ -+ -+ The close event is sent by the compositor when the user -+ wants the surface to be closed. This should be equivalent to -+ the user clicking the close button in client-side decorations, -+ if your application has any... -+ -+ This is only a request that the user intends to close your -+ window. The client may choose to ignore this request, or show -+ a dialog to ask the user to save their data... - - - -@@ -409,22 +431,6 @@ - - - -- -- -- A client must respond to a ping event with a pong request or -- the client may be deemed unresponsive. -- -- -- -- -- -- -- Ping a client to check if it is receiving events and sending -- requests. A client is expected to reply with a pong request. -- -- -- -- - - - The popup_done event is sent out when a popup grab is broken, -diff --git a/src/client/client.pro b/src/client/client.pro -index 9ecf82f..73e3b7f 100644 ---- a/src/client/client.pro -+++ b/src/client/client.pro -@@ -59,6 +59,7 @@ SOURCES += qwaylandintegration.cpp \ - qwaylanddatasource.cpp \ - qwaylandshellsurface.cpp \ - qwaylandwlshellsurface.cpp \ -+ qwaylandxdgshell.cpp \ - qwaylandxdgsurface.cpp \ - qwaylandextendedoutput.cpp \ - qwaylandextendedsurface.cpp \ -@@ -89,6 +90,7 @@ HEADERS += qwaylandintegration_p.h \ - qwaylanddatasource_p.h \ - qwaylandshellsurface_p.h \ - qwaylandwlshellsurface_p.h \ -+ qwaylandxdgshell_p.h \ - qwaylandxdgsurface_p.h \ - qwaylandextendedoutput_p.h \ - qwaylandextendedsurface_p.h \ -diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 7f953ad..2e25672 100644 ---- a/src/client/qwaylanddisplay.cpp -+++ b/src/client/qwaylanddisplay.cpp -@@ -50,7 +50,7 @@ - #include "qwaylandclipboard_p.h" - #include "qwaylanddatadevicemanager_p.h" - #include "qwaylandhardwareintegration_p.h" -- -+#include "qwaylandxdgshell_p.h" - - #include "qwaylandwindowmanagerintegration_p.h" - -@@ -209,8 +209,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin - mShm = static_cast(wl_registry_bind(registry, id, &wl_shm_interface,1)); - } else if (interface == QStringLiteral("xdg_shell") - && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { -- mShellXdg.reset(new QtWayland::xdg_shell(registry, id)); -- mShellXdg->use_unstable_version(QtWayland::xdg_shell::version_current); -+ mShellXdg.reset(new QWaylandXdgShell(registry,id)); - } else if (interface == QStringLiteral("wl_shell")){ - mShell.reset(new QtWayland::wl_shell(registry, id)); - } else if (interface == QStringLiteral("wl_seat")) { -@@ -275,4 +274,9 @@ void QWaylandDisplay::forceRoundTrip() - wl_display_roundtrip(mDisplay); - } - -+QtWayland::xdg_shell *QWaylandDisplay::shellXdg() -+{ -+ return mShellXdg.data(); -+} -+ - QT_END_NAMESPACE -diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index cf5dfc2..f1b35a7 100644 ---- a/src/client/qwaylanddisplay_p.h -+++ b/src/client/qwaylanddisplay_p.h -@@ -72,6 +72,7 @@ class QWaylandWindow; - class QWaylandEventThread; - class QWaylandIntegration; - class QWaylandHardwareIntegration; -+class QWaylandXdgShell; - - namespace QtWayland { - class qt_output_extension; -@@ -115,7 +116,7 @@ public: - QtWayland::wl_compositor *compositor() { return &mCompositor; } - - QtWayland::wl_shell *shell() { return mShell.data(); } -- QtWayland::xdg_shell *shellXdg() { return mShellXdg.data(); } -+ QtWayland::xdg_shell *shellXdg(); - - QList inputDevices() const { return mInputDevices; } - QWaylandInputDevice *defaultInputDevice() const; -@@ -171,7 +172,7 @@ private: - QThread *mEventThread; - QWaylandEventThread *mEventThreadObject; - QScopedPointer mShell; -- QScopedPointer mShellXdg; -+ QScopedPointer mShellXdg; - QList mScreens; - QList mInputDevices; - QList mRegistryListeners; -diff --git a/src/client/qwaylandxdgshell.cpp b/src/client/qwaylandxdgshell.cpp -new file mode 100644 -index 0000000..eb9f91c ---- /dev/null -+++ b/src/client/qwaylandxdgshell.cpp -@@ -0,0 +1,77 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandxdgshell_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandXdgShell::QWaylandXdgShell(struct ::xdg_shell *shell) -+ : QtWayland::xdg_shell(shell) -+{ -+} -+ -+QWaylandXdgShell::QWaylandXdgShell(struct ::wl_registry *registry, uint32_t id) -+ : QtWayland::xdg_shell(registry, id) -+{ -+ use_unstable_version(QtWayland::xdg_shell::version_current); -+} -+ -+QWaylandXdgShell::~QWaylandXdgShell() -+{ -+ xdg_shell_destroy(object()); -+} -+ -+ -+void QWaylandXdgShell::xdg_shell_ping(uint32_t serial) -+{ -+ pong(serial); -+} -+ -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandxdgshell_p.h b/src/client/qwaylandxdgshell_p.h -new file mode 100644 -index 0000000..6a396bd ---- /dev/null -+++ b/src/client/qwaylandxdgshell_p.h -@@ -0,0 +1,73 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDXDGSHELL_H -+#define QWAYLANDXDGSHELL_H -+ -+#include -+ -+#include -+ -+#include -+#include -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShell : public QtWayland::xdg_shell -+{ -+public: -+ QWaylandXdgShell(struct ::xdg_shell *shell); -+ QWaylandXdgShell(struct ::wl_registry *registry, uint32_t id); -+ -+ virtual ~QWaylandXdgShell(); -+ -+private: -+ void xdg_shell_ping(uint32_t serial) Q_DECL_OVERRIDE; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDXDGSHELL_H -diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp -index 1b8affa..5fb74d2 100644 ---- a/src/client/qwaylandxdgsurface.cpp -+++ b/src/client/qwaylandxdgsurface.cpp -@@ -87,23 +87,25 @@ void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice) - - void QWaylandXdgSurface::setMaximized() - { -- m_maximized = true; -- m_size = m_window->window()->geometry().size(); -- set_maximized(); -+ if (!m_maximized) -+ request_change_state(XDG_SURFACE_STATE_MAXIMIZED, true, 0); - } - - void QWaylandXdgSurface::setFullscreen() - { -- m_fullscreen = true; -- m_size = m_window->window()->geometry().size(); -- set_fullscreen(); -+ if (!m_fullscreen) -+ request_change_state(XDG_SURFACE_STATE_FULLSCREEN, true, 0); - } - - void QWaylandXdgSurface::setNormal() - { - if (m_fullscreen || m_maximized || m_minimized) { -- if (m_maximized) { unset_maximized(); } -- if (m_fullscreen) { unset_fullscreen(); } -+ if (m_maximized) { -+ request_change_state(XDG_SURFACE_STATE_MAXIMIZED, false, 0); -+ } -+ if (m_fullscreen) { -+ request_change_state(XDG_SURFACE_STATE_FULLSCREEN, false, 0); -+ } - - m_fullscreen = m_maximized = m_minimized = false; - setTopLevel(); -@@ -158,16 +160,48 @@ void QWaylandXdgSurface::setAppId(const QString & appId) - return QtWayland::xdg_surface::set_app_id(appId); - } - --void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial) -+void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height) - { -- pong(serial); -+ m_window->configure(0 , width, height); - } - --void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width, -- int32_t height) -+void QWaylandXdgSurface::xdg_surface_change_state(uint32_t state, -+ uint32_t value, -+ uint32_t serial) - { -- m_window->configure(edges, width, height); -+ -+ if (state == XDG_SURFACE_STATE_MAXIMIZED -+ || state == XDG_SURFACE_STATE_FULLSCREEN) { -+ if (value) { -+ m_size = m_window->window()->geometry().size(); -+ } else { -+ QMargins m = m_window->frameMargins(); -+ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); -+ } -+ } -+ -+ switch (state) { -+ case XDG_SURFACE_STATE_MAXIMIZED: -+ m_maximized = value; -+ break; -+ case XDG_SURFACE_STATE_FULLSCREEN: -+ m_fullscreen = value; -+ break; -+ } -+ -+ xdg_surface_ack_change_state(object(), state, value, serial); - } - -+void QWaylandXdgSurface::xdg_surface_activated() -+{ -+} -+ -+void QWaylandXdgSurface::xdg_surface_deactivated() -+{ -+} -+ -+void QWaylandXdgSurface::xdg_surface_close() -+{ -+} - - QT_END_NAMESPACE -diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h -index 744d3f3..d2a154e 100644 ---- a/src/client/qwaylandxdgsurface_p.h -+++ b/src/client/qwaylandxdgsurface_p.h -@@ -93,10 +93,15 @@ private: - bool m_fullscreen; - QSize m_size; - -- void xdg_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; -- void xdg_surface_configure(uint32_t edges, -- int32_t width, -+ void xdg_surface_configure(int32_t width, - int32_t height) Q_DECL_OVERRIDE; -+ void xdg_surface_change_state(uint32_t state, -+ uint32_t value, -+ uint32_t serial) Q_DECL_OVERRIDE; -+ void xdg_surface_activated() Q_DECL_OVERRIDE; -+ void xdg_surface_deactivated() Q_DECL_OVERRIDE; -+ void xdg_surface_close() Q_DECL_OVERRIDE; -+ - friend class QWaylandWindow; - }; - --- -1.9.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch deleted file mode 100644 index 413459fb6..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch +++ /dev/null @@ -1,128 +0,0 @@ -From b4f032b13338ad6c21024177b031c75063ef7493 Mon Sep 17 00:00:00 2001 -From: Manuel Bachmann -Date: Sun, 7 Sep 2014 08:19:30 +0200 -Subject: [PATCH 20/21] Add IVI-Shell protocol file version patch v6 - -Source : http://lists.freedesktop.org/archives/wayland-devel/2014-June/015617.html - -This file comes from the last proposed definition of the IVI-Shell protocol, -and will need to be refreshed on protocol update. - -Task-number: QTBUG-XXXXX/part/1of2 - -Signed-off-by: Manuel Bachmann ---- - src/3rdparty/protocol/ivi-application.xml | 101 ++++++++++++++++++++++++++++++ - 1 file changed, 101 insertions(+) - create mode 100644 src/3rdparty/protocol/ivi-application.xml - -diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml -new file mode 100644 -index 0000000..833fd38 ---- /dev/null -+++ b/src/3rdparty/protocol/ivi-application.xml -@@ -0,0 +1,101 @@ -+ -+ -+ -+ -+ Copyright (C) 2013 DENSO CORPORATION -+ Copyright (c) 2013 BMW Car IT GmbH -+ -+ Permission is hereby granted, free of charge, to any person obtaining a copy -+ of this software and associated documentation files (the "Software"), to deal -+ in the Software without restriction, including without limitation the rights -+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+ copies of the Software, and to permit persons to whom the Software is -+ furnished to do so, subject to the following conditions: -+ -+ The above copyright notice and this permission notice shall be included in -+ all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -+ THE SOFTWARE. -+ -+ -+ -+ -+ -+ -+ -+ This removes link from ivi_id to wl_surface and destroys ivi_surface. -+ -+ -+ -+ -+ -+ The new visibility state is provided in argument visibility. -+ If visibility is 0, the surface has become invisible. -+ If visibility is not 0, the surface has become visible. -+ -+ -+ -+ -+ -+ -+ These define all possible warning codes returned by ivi compositor on server-side warnings. -+ invalid_wl_surface: -+ - wl_surface already has a another role. -+ - wl_surface is destroyed before the ivi_surface is destroyed. -+ ivi_id_in_use: ivi_id is already assigned by another application. -+ -+ -+ -+ -+ -+ -+ -+ The ivi compositor encountered warning while processing a request by this -+ application. The warning is defined by argument warning_code and optional -+ warning_text. If the warning is detected, client shall destroy the ivi_surface -+ object. -+ -+ When a warning event is sent, the compositor turns the ivi_surface object inert. -+ The ivi_surface will not deliver further events, all requests on it are ignored -+ except 'destroy', and the association to the ivi_id is removed. The client -+ should destroy the ivi_surface object. If an inert ivi_surface object is used as -+ an argument to any other object's request, that request will [produce a fatal -+ error / produce a warning / be ignored]. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ This interface is implemented by servers that provide desktop-style user interfaces. -+ It allows clients to associate a ivi_surface with a basic surface. -+ -+ -+ -+ -+ surface_create will create a interface:ivi_surface with numeric ID; ivi_id in -+ ivi compositor. These ivi_ids are defined as unique in the system to identify -+ it inside of ivi compositor. The ivi compositor implements business logic how to -+ set properties of the surface with ivi_id according to status of the system. -+ E.g. a unique ID for Car Navigation application is used for implementing special -+ logic of the application about where it shall be located. -+ if a wl_surface which already has another role is set, the server regards this as -+ error and disconnects the client. -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.9.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch deleted file mode 100644 index 8723def26..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch +++ /dev/null @@ -1,539 +0,0 @@ -From 1ddfa43692cabae0f552351cfbc09377e479471e Mon Sep 17 00:00:00 2001 -From: Manuel Bachmann -Date: Mon, 8 Sep 2014 11:38:01 +0200 -Subject: [PATCH 21/21] Implement initial IVI-Shell support - -IVI-Shell provides a shell interface for Weston, which maps the GENIVI API (http://www.genivi.org) for In-Vehicle Infotainment. - -This patch enables detecting the IVI-Shell interface at runtime, and creating compatible surfaces if found. - -Task-number: QTBUG-XXXXX/part/2of2 - -Change-Id: I1f6c11bf56b727a54fb48faab9c076b61d635440 -Signed-off-by: Manuel Bachmann ---- - src/client/client.pro | 5 ++ - src/client/qwaylanddisplay.cpp | 9 ++++ - src/client/qwaylanddisplay_p.h | 5 ++ - src/client/qwaylandivishell.cpp | 69 +++++++++++++++++++++++++ - src/client/qwaylandivishell_p.h | 70 +++++++++++++++++++++++++ - src/client/qwaylandivisurface.cpp | 105 ++++++++++++++++++++++++++++++++++++++ - src/client/qwaylandivisurface_p.h | 90 ++++++++++++++++++++++++++++++++ - src/client/qwaylandwindow.cpp | 8 ++- - 8 files changed, 360 insertions(+), 1 deletion(-) - create mode 100644 src/client/qwaylandivishell.cpp - create mode 100644 src/client/qwaylandivishell_p.h - create mode 100644 src/client/qwaylandivisurface.cpp - create mode 100644 src/client/qwaylandivisurface_p.h - -diff --git a/src/client/client.pro b/src/client/client.pro -index 73e3b7f..adb526d 100644 ---- a/src/client/client.pro -+++ b/src/client/client.pro -@@ -42,6 +42,7 @@ WAYLANDCLIENTSOURCES += \ - ../extensions/windowmanager.xml \ - ../3rdparty/protocol/text.xml \ - ../3rdparty/protocol/xdg-shell.xml \ -+ ../3rdparty/protocol/ivi-application.xml \ - - SOURCES += qwaylandintegration.cpp \ - qwaylandnativeinterface.cpp \ -@@ -61,6 +62,8 @@ SOURCES += qwaylandintegration.cpp \ - qwaylandwlshellsurface.cpp \ - qwaylandxdgshell.cpp \ - qwaylandxdgsurface.cpp \ -+ qwaylandivishell.cpp \ -+ qwaylandivisurface.cpp \ - qwaylandextendedoutput.cpp \ - qwaylandextendedsurface.cpp \ - qwaylandsubsurface.cpp \ -@@ -92,6 +95,8 @@ HEADERS += qwaylandintegration_p.h \ - qwaylandwlshellsurface_p.h \ - qwaylandxdgshell_p.h \ - qwaylandxdgsurface_p.h \ -+ qwaylandivishell_p.h \ -+ qwaylandivisurface_p.h \ - qwaylandextendedoutput_p.h \ - qwaylandextendedsurface_p.h \ - qwaylandsubsurface_p.h \ -diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 2e25672..2a93db7 100644 ---- a/src/client/qwaylanddisplay.cpp -+++ b/src/client/qwaylanddisplay.cpp -@@ -51,6 +51,7 @@ - #include "qwaylanddatadevicemanager_p.h" - #include "qwaylandhardwareintegration_p.h" - #include "qwaylandxdgshell_p.h" -+#include "qwaylandivishell_p.h" - - #include "qwaylandwindowmanagerintegration_p.h" - -@@ -62,6 +63,7 @@ - - #include - #include -+#include - - #include - #include -@@ -207,6 +209,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin - mCompositor.init(registry, id); - } else if (interface == QStringLiteral("wl_shm")) { - mShm = static_cast(wl_registry_bind(registry, id, &wl_shm_interface,1)); -+ } else if (interface == QStringLiteral("ivi_application")) { -+ mShellIvi.reset(new QWaylandIviShell(registry,id)); - } else if (interface == QStringLiteral("xdg_shell") - && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { - mShellXdg.reset(new QWaylandXdgShell(registry,id)); -@@ -279,4 +283,9 @@ QtWayland::xdg_shell *QWaylandDisplay::shellXdg() - return mShellXdg.data(); - } - -+QtWayland::ivi_application *QWaylandDisplay::shellIvi() -+{ -+ return mShellIvi.data(); -+} -+ - QT_END_NAMESPACE -diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index f1b35a7..b9c686c 100644 ---- a/src/client/qwaylanddisplay_p.h -+++ b/src/client/qwaylanddisplay_p.h -@@ -52,6 +52,7 @@ - #include - #include - #include -+#include - - struct wl_cursor_image; - -@@ -72,6 +73,7 @@ class QWaylandWindow; - class QWaylandEventThread; - class QWaylandIntegration; - class QWaylandHardwareIntegration; -+class QWaylandIviShell; - class QWaylandXdgShell; - - namespace QtWayland { -@@ -81,6 +83,7 @@ namespace QtWayland { - class qt_surface_extension; - class wl_text_input_manager; - class xdg_shell; -+ class ivi_application; - } - - typedef void (*RegistryListener)(void *data, -@@ -117,6 +120,7 @@ public: - - QtWayland::wl_shell *shell() { return mShell.data(); } - QtWayland::xdg_shell *shellXdg(); -+ QtWayland::ivi_application *shellIvi(); - - QList inputDevices() const { return mInputDevices; } - QWaylandInputDevice *defaultInputDevice() const; -@@ -173,6 +177,7 @@ private: - QWaylandEventThread *mEventThreadObject; - QScopedPointer mShell; - QScopedPointer mShellXdg; -+ QScopedPointer mShellIvi; - QList mScreens; - QList mInputDevices; - QList mRegistryListeners; -diff --git a/src/client/qwaylandivishell.cpp b/src/client/qwaylandivishell.cpp -new file mode 100644 -index 0000000..9d63d0d ---- /dev/null -+++ b/src/client/qwaylandivishell.cpp -@@ -0,0 +1,69 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandivishell_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandIviShell::QWaylandIviShell(struct ::ivi_application *shell) -+ : QtWayland::ivi_application(shell) -+{ -+} -+ -+QWaylandIviShell::QWaylandIviShell(struct ::wl_registry *registry, uint32_t id) -+ : QtWayland::ivi_application(registry, id) -+{ -+} -+ -+QWaylandIviShell::~QWaylandIviShell() -+{ -+ ivi_application_destroy(object()); -+} -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandivishell_p.h b/src/client/qwaylandivishell_p.h -new file mode 100644 -index 0000000..f9f6983 ---- /dev/null -+++ b/src/client/qwaylandivishell_p.h -@@ -0,0 +1,70 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDIVISHELL_H -+#define QWAYLANDIVISHELL_H -+ -+#include -+ -+#include -+ -+#include -+#include -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviShell : public QtWayland::ivi_application -+{ -+public: -+ QWaylandIviShell(struct ::ivi_application *shell); -+ QWaylandIviShell(struct ::wl_registry *registry, uint32_t id); -+ -+ virtual ~QWaylandIviShell(); -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDIVISHELL_H -diff --git a/src/client/qwaylandivisurface.cpp b/src/client/qwaylandivisurface.cpp -new file mode 100644 -index 0000000..a12309e ---- /dev/null -+++ b/src/client/qwaylandivisurface.cpp -@@ -0,0 +1,105 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandivisurface_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandIviSurface::QWaylandIviSurface(struct ::ivi_surface *ivi_surface, QWaylandWindow *window) -+ : QtWayland::ivi_surface(ivi_surface) -+ , m_window(window) -+{ -+} -+ -+QWaylandIviSurface::~QWaylandIviSurface() -+{ -+ ivi_surface_destroy(object()); -+} -+ -+void QWaylandIviSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) -+{ -+} -+ -+void QWaylandIviSurface::move(QWaylandInputDevice *inputDevice) -+{ -+} -+ -+void QWaylandIviSurface::setMaximized() -+{ -+} -+ -+void QWaylandIviSurface::setFullscreen() -+{ -+} -+ -+void QWaylandIviSurface::setNormal() -+{ -+} -+ -+void QWaylandIviSurface::setMinimized() -+{ -+} -+ -+void QWaylandIviSurface::setTopLevel() -+{ -+} -+ -+void QWaylandIviSurface::updateTransientParent(QWindow *parent) -+{ -+} -+ -+void QWaylandIviSurface::setTitle(const QString & title) -+{ -+} -+ -+void QWaylandIviSurface::setAppId(const QString & appId) -+{ -+} -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandivisurface_p.h b/src/client/qwaylandivisurface_p.h -new file mode 100644 -index 0000000..c6a7ce6 ---- /dev/null -+++ b/src/client/qwaylandivisurface_p.h -@@ -0,0 +1,90 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDIVISURFACE_H -+#define QWAYLANDIVISURFACE_H -+ -+#include -+ -+#include -+ -+#include -+#include -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+class QWaylandExtendedSurface; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface -+ , public QWaylandShellSurface -+{ -+public: -+ QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window); -+ virtual ~QWaylandIviSurface(); -+ -+ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; -+ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; -+ -+ void setTitle(const QString &title) Q_DECL_OVERRIDE; -+ void setAppId(const QString &appId) Q_DECL_OVERRIDE; -+ -+private: -+ void setMaximized() Q_DECL_OVERRIDE; -+ void setFullscreen() Q_DECL_OVERRIDE; -+ void setNormal() Q_DECL_OVERRIDE; -+ void setMinimized() Q_DECL_OVERRIDE; -+ -+ void setTopLevel() Q_DECL_OVERRIDE; -+ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; -+ -+private: -+ QWaylandWindow *m_window; -+ -+ friend class QWaylandWindow; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDIVISURFACE_H -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 3fb3a49..45a58f2 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -39,6 +39,8 @@ - ** - ****************************************************************************/ - -+#include -+ - #include "qwaylandwindow_p.h" - - #include "qwaylandbuffer_p.h" -@@ -48,10 +50,12 @@ - #include "qwaylandshellsurface_p.h" - #include "qwaylandwlshellsurface_p.h" - #include "qwaylandxdgsurface_p.h" -+#include "qwaylandivisurface_p.h" - #include "qwaylandextendedsurface_p.h" - #include "qwaylandsubsurface_p.h" - #include "qwaylanddecoration_p.h" - #include "qwaylandwindowmanagerintegration_p.h" -+#define IVI_SURFACE_ID 8000 - - #include - #include -@@ -95,7 +99,9 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - mWindowId = id++; - - if (!(window->flags() & Qt::BypassWindowManagerHint)) { -- if (mDisplay->shellXdg()) { -+ if (mDisplay->shellIvi()) { -+ mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this); -+ } else if (mDisplay->shellXdg()) { - if (window->type() & Qt::Window) { - mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); - } --- -1.9.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch deleted file mode 100644 index 99b519399..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/tests/auto/compositor/compositor/compositor.pro b/tests/auto/compositor/compositor/compositor.pro -index f0cdaf32..64b60218 100644 ---- a/tests/auto/compositor/compositor/compositor.pro -+++ b/tests/auto/compositor/compositor/compositor.pro -@@ -7,9 +7,6 @@ QT += core-private gui-private waylandcompositor waylandcompositor-private - - QMAKE_USE += wayland-client wayland-server - --qtConfig(xkbcommon-evdev): \ -- QMAKE_USE += xkbcommon_evdev -- - WAYLANDCLIENTSOURCES += \ - ../../../../src/3rdparty/protocol/xdg-shell.xml \ - ../../../../src/3rdparty/protocol/ivi-application.xml \ diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch deleted file mode 100644 index bca61b5db..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 9617c349a212d5407087daf4f4a2386bce94ecc1 Mon Sep 17 00:00:00 2001 -From: Philippe Coval -Date: Thu, 12 Jun 2014 11:55:29 +0200 -Subject: [PATCH 18/21] packaging: enable xdg-shell at runtime - -Change-Id: Iffbae496f1e09c8fa44a28d4eb515678e3bbb297 -Bug-Tizen: TIVI-3113/part -Signed-off-by: Philippe Coval ---- - packaging/qt5-qtwayland.spec | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/packaging/qt5-qtwayland.spec b/packaging/qt5-qtwayland.spec -index cba18e2..ff32185 100644 ---- a/packaging/qt5-qtwayland.spec -+++ b/packaging/qt5-qtwayland.spec -@@ -97,6 +97,11 @@ rm -rf %{buildroot} - - %post - /sbin/ldconfig -+ -+f="/etc/profile.d/qt.sh" -+grep QT_WAYLAND_USE_XDG_SHELL $f \ -+ || echo "QT_WAYLAND_USE_XDG_SHELL='defined'; export QT_WAYLAND_USE_XDG_SHELL" >> $f -+ - %postun - /sbin/ldconfig - --- -1.9.1 - diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch deleted file mode 100644 index f113266e4..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland/disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: git/qtwayland.pro -=================================================================== ---- git.orig/qtwayland.pro 2014-09-18 12:01:23.883582734 +0300 -+++ git/qtwayland.pro 2014-09-18 12:05:49.743574961 +0300 -@@ -7,7 +7,6 @@ - qtCompileTest(egl) - qtCompileTest(brcm_egl) - qtCompileTest(glx) --qtCompileTest(xcomposite) - qtCompileTest(drm_egl_server) - - load(qt_parts) diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland_%.bbappend b/meta-agl-profile-demo/recipes-qt/qt5/qtwayland_%.bbappend deleted file mode 100644 index 9807840ca..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwayland_%.bbappend +++ /dev/null @@ -1,36 +0,0 @@ -FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" - -# QT_MODULE_BRANCH = "5.4" - -# TODO: -# These patches for IVI-SHELL are tempolary disabled because of issues. And new -# patches are proposed. -# -# file://0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch \ -# file://0021-Implement-initial-IVI-Shell-support.patch \ -# file://0001-protocol-update-3rd-party-ivi-application-protocol.patch \ -# file://0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch \ -# -# The xdg-shell merged into upstream, so we don't need these patch anymore. -# But xdg-shell doesn't work well in current AGL Distro because of -# mismatch of protocol versions between server(weston) and client(Qt Apps). -# -# file://0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch \ -# file://0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch \ -# file://0019-xdg-shell-upgrade-to-support-current-version-weston-.patch \ -# - -SRC_URI_append = "\ - file://0010-Added-manifest-file-according-to-smack-3-domain-mode.patch \ - " -SRC_URI_append_checkforkrogoth = "\ - file://disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch \ - file://0001-Implement-initial-IVI-shell-support-with-shell-integ.patch \ - file://0002-Fix-multiple-QWindow.patch \ - " - - -DEPENDS_append_koelsch = " libegl gles-user-module" -DEPENDS_append_porter = " ${@base_conditional('PREFERRED_PROVIDER_virtual/egl', 'mesa', 'mesa', 'libegl gles-user-module', d)}" - -SRC_URI_append = " file://0099_qtwayland_no_evdev.patch " diff --git a/meta-agl-profile-demo/recipes-qt/qt5/qtwebkit_%.bbappend b/meta-agl-profile-demo/recipes-qt/qt5/qtwebkit_%.bbappend deleted file mode 100644 index 0420578e1..000000000 --- a/meta-agl-profile-demo/recipes-qt/qt5/qtwebkit_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -PACKAGECONFIG = "gstreamer qtlocation qtmultimedia qtsensors" diff --git a/meta-agl-profile-graphical-html5/conf/layer.conf b/meta-agl-profile-graphical-html5/conf/layer.conf new file mode 100644 index 000000000..4d84dba52 --- /dev/null +++ b/meta-agl-profile-graphical-html5/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH =. "${LAYERDIR}:" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "aglprofilegraphicalhtml5" +BBFILE_PATTERN_aglprofilegraphicalhtml5 = "^${LAYERDIR}/" +BBFILE_PRIORITY_aglprofilegraphicalhtml5 = "70" diff --git a/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.service b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.service new file mode 100644 index 000000000..2c8648475 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.service @@ -0,0 +1,16 @@ +[Unit] +Description=HTML5 runtime for OpenIVI Mobility applications +Requires=afm-user-daemon.service InputEventManager.service +After=afm-user-daemon.service InputEventManager.service +ConditionKernelCommandLine=!agl.nogfx + +[Service] +Type=dbus +BusName=org.agl.openivi +ExecStart=/usr/bin/openivi-html5.sh +Restart=on-failure +RestartSec=5 +TimeoutStopSec=1 + +[Install] +WantedBy=default.target diff --git a/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.sh b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.sh new file mode 100644 index 000000000..a318214ad --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +if test -z "$XDG_CONFIG_DIRS"; then + export XDG_CONFIG_DIRS=/etc/xdg/ +fi + +if test -z "$XDG_RUNTIME_DIR"; then + export XDG_RUNTIME_DIR=/run/user/$UID + mkdir --parents $XDG_RUNTIME_DIR + chmod 0700 $XDG_RUNTIME_DIR +fi + +# Default homescreen +HOMESCREEN=/usr/share/openivi/example/cluster/index.html + +# Read configuration +HOMESCREEN_CONFIG=$XDG_CONFIG_DIRS/openivi-html5/openivi-html5.ini +if [ -e "$HOMESCREEN_CONFIG" ] ; then + HTML=`sed -n '/^homescreen=\(.*\)$/s//\1/p' < $HOMESCREEN_CONFIG` + if [ -n "$HTML" ] ; then + HOMESCREEN=$HTML + fi +fi + +#the following value shall be modified for your display side +SCREEN_W=1080 +SCREEN_H=1920 + +# Demo is configured to FullHD +QT_W=1080 +QT_H=1920 + +QT_IVI_SURFACE_ID=4194304 QT_WAYLAND_SHELL_INTEGRATION=ivi-shell /usr/bin/openivi-html5 -f -u $HOMESCREEN & + +# qmlscene create 2 surfaces +# 0x80000000 : for off screen buffer ? +# 0x80000001 : visible +# +SURFACE_ID_QML=0x80000001 + +# +# layer-add-surfaces wait till 2 surfaces are created. +# +layer-add-surfaces 1000 2 + +/usr/bin/LayerManagerControl set surface $SURFACE_ID_QML destination region 0 0 $SCREEN_W $SCREEN_H +/usr/bin/LayerManagerControl set surface $SURFACE_ID_QML source region 0 0 $QT_W $QT_H +/usr/bin/LayerManagerControl set layer 1000 render order $SURFACE_ID_QML +/usr/bin/LayerManagerControl set surfaces $SURFACE_ID_QML input focus keyboard +/usr/bin/LayerManagerControl set screen 0 render order 1000 diff --git a/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5_git.bb b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5_git.bb new file mode 100644 index 000000000..168b98c78 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5_git.bb @@ -0,0 +1,43 @@ +DESCRIPTION = "OpenIVI Mobility HTML5 environment" +HOMEPAGE = "https://openivimobility.github.io/" +SECTION = "base" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4641e94ec96f98fabc56ff9cc48be14b" +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI = " \ + git://github.com/openivimobility/openivi-html5.git;branch=master;tag=0b370eea8c7c852365bd717013a523b678abbdba \ + file://openivi-html5.sh \ + file://openivi-html5.service \ +" + +inherit pkgconfig cmake_qt5 externalsrc systemd +PV = "0.1" + +S = "${WORKDIR}/git" + +RDEPENDS_${PN} = "qtbase qtwebkit inputeventmanager windowmanager" +DEPENDS = "qtbase-native qtbase qtwebkit" + +EXTRA_OECMAKE = " -DCMAKE_DISABLE_FIND_PACKAGE_X11=TRUE " + +FILES_${PN} = "/usr/bin/openivi-html5 /usr/share/openivi/*" + +do_install() { + install -d ${D}${bindir} + install -m 0755 openivi-html5 ${D}${bindir} + + install -d ${D}${datadir}/openivi/ + cp -r ${S}/example ${D}${datadir}/openivi/ + + install -p -D ${WORKDIR}/openivi-html5.sh ${D}${bindir}/openivi-html5.sh + + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${systemd_user_unitdir} + install -p -D ${WORKDIR}/openivi-html5.service ${D}${systemd_user_unitdir}/openivi-html5.service + install -d ${D}${sysconfdir}/systemd/user/default.target.wants + ln -sf ${systemd_user_unitdir}/openivi-html5.service ${D}${sysconfdir}/systemd/user/default.target.wants + fi +} + +FILES_${PN} += " ${prefix}/bin/openivi-html5.sh ${systemd_user_unitdir} ${sysconfdir}" diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5-crosssdk.bb b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5-crosssdk.bb new file mode 100755 index 000000000..a81472bb7 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5-crosssdk.bb @@ -0,0 +1,56 @@ +SUMMARY = "Cross SDK of Full AGL Distribution for IVI profile" + +DESCRIPTION = "SDK image for full AGL Distribution for IVI profile. \ +It includes the full meta-toolchain, plus developement headers and libraries \ +to form a standalone cross SDK." + +require agl-demo-platform-html5.bb + +LICENSE = "MIT" + +IMAGE_FEATURES_append = " dev-pkgs" +IMAGE_INSTALL_append = " kernel-dev kernel-devsrc" + +inherit populate_sdk populate_sdk_qt5 + +# Task do_populate_sdk and do_rootfs can't be exec simultaneously. +# Both exec "createrepo" on the same directory, and so one of them +# can failed (randomly). +addtask do_populate_sdk after do_rootfs + +# native tools to support Chromium build inside SDK (SPEC-942) +TOOLCHAIN_HOST_TASK += " \ + nativesdk-gn \ + nativesdk-ninja \ + nativesdk-gperf \ + nativesdk-zlib \ + nativesdk-xz \ + nativesdk-nspr-dev \ + nativesdk-nss-dev \ + nativesdk-lua \ + " + +# required dependencies for Chromium build inside SDK (SPEC-942) +TOOLCHAIN_TARGET_TASK += " \ + pciutils-dev \ + pulseaudio-dev \ + cairo-dev \ + nss-dev \ + cups-dev \ + gconf-dev \ + libexif-dev \ + pango-dev \ + libdrm-dev \ + libssp-dev \ + lua-dev \ + lua-staticdev \ + ${@bb.utils.contains('LICENSE_FLAGS_WHITELIST', 'commercial', 'ffmpeg-dev', '', d)} \ + " + +# Add wayland-scanner to SDK (SPEC-945) +# Use TOOLCHAIN_HOST_TASK instead of adding to the packagegroup +# wayland-scanner is in nativesdk-wayland-dev ! +# option: add also nativesdk-qtwayland-tools +TOOLCHAIN_HOST_TASK_append = " nativesdk-wayland nativesdk-wayland-dev" + +TOOLCHAIN_HOST_TASK_append = " nativesdk-perl-modules " diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.bb new file mode 100644 index 000000000..c9247a854 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.bb @@ -0,0 +1,10 @@ +DESCRIPTION = "AGL Demo Platform image currently contains a simple HMI and \ +demos." + +LICENSE = "MIT" + +require agl-demo-platform-html5.inc + +IMAGE_INSTALL_append = "\ + packagegroup-agl-demo-platform-html5 \ + " diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.inc b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.inc new file mode 100644 index 000000000..3005abeb0 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.inc @@ -0,0 +1,2 @@ +# Base image +require recipes-ivi/images/agl-image-ivi.inc diff --git a/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb new file mode 100644 index 000000000..ee5c1f701 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb @@ -0,0 +1,26 @@ +SUMMARY = "The software for DEMO platform of AGL IVI profile" +DESCRIPTION = "A set of packages belong to AGL Demo Platform" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-demo-platform-html5 \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-image-ivi \ + " + +# add packages for demo platform (include demo apps) here +#RDEPENDS_${PN} += " \ +# packagegroup-agl-demo \ +# " + +# add packages for OpenIVI-HTML5 demo +RDEPENDS_${PN} += " \ + openivi-html5 \ + " diff --git a/meta-agl-profile-graphical-qt5/conf/layer.conf b/meta-agl-profile-graphical-qt5/conf/layer.conf new file mode 100644 index 000000000..eb47e5d14 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH =. "${LAYERDIR}:" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "aglprofilegraphicalqt5" +BBFILE_PATTERN_aglprofilegraphicalqt5 = "^${LAYERDIR}/" +BBFILE_PRIORITY_aglprofilegraphicalqt5 = "70" diff --git a/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb b/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb new file mode 100644 index 000000000..a31c666ca --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb @@ -0,0 +1,17 @@ +SUMMARY = "The software for application framework of AGL IVI profile" +DESCRIPTION = "A set of packages belong to AGL application framework which required by \ +Native App Fw Subsystem" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-appfw-native \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-appfw-native-qt5 \ + " diff --git a/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-qt5.bb new file mode 100644 index 000000000..2f0f01fec --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-qt5.bb @@ -0,0 +1,16 @@ +SUMMARY = "The software for application framework of AGL IVI profile" +DESCRIPTION = "A set of packages belong to AGL application framework" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-appfw-qt5 \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-appfw-native \ +" \ No newline at end of file diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb new file mode 100755 index 000000000..2ab462b34 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb @@ -0,0 +1,56 @@ +SUMMARY = "Cross SDK of Full AGL Distribution for IVI profile" + +DESCRIPTION = "SDK image for full AGL Distribution for IVI profile. \ +It includes the full meta-toolchain, plus developement headers and libraries \ +to form a standalone cross SDK." + +require agl-image-graphical-qt5.bb + +LICENSE = "MIT" + +IMAGE_FEATURES_append = " dev-pkgs" +IMAGE_INSTALL_append = " kernel-dev kernel-devsrc" + +inherit populate_sdk populate_sdk_qt5 + +# Task do_populate_sdk and do_rootfs can't be exec simultaneously. +# Both exec "createrepo" on the same directory, and so one of them +# can failed (randomly). +addtask do_populate_sdk after do_rootfs + +# native tools to support Chromium build inside SDK (SPEC-942) +TOOLCHAIN_HOST_TASK += " \ + nativesdk-gn \ + nativesdk-ninja \ + nativesdk-gperf \ + nativesdk-zlib \ + nativesdk-xz \ + nativesdk-nspr-dev \ + nativesdk-nss-dev \ + nativesdk-lua \ + " + +# required dependencies for Chromium build inside SDK (SPEC-942) +TOOLCHAIN_TARGET_TASK += " \ + pciutils-dev \ + pulseaudio-dev \ + cairo-dev \ + nss-dev \ + cups-dev \ + gconf-dev \ + libexif-dev \ + pango-dev \ + libdrm-dev \ + libssp-dev \ + lua-dev \ + lua-staticdev \ + ${@bb.utils.contains('LICENSE_FLAGS_WHITELIST', 'commercial', 'ffmpeg-dev', '', d)} \ + " + +# Add wayland-scanner to SDK (SPEC-945) +# Use TOOLCHAIN_HOST_TASK instead of adding to the packagegroup +# wayland-scanner is in nativesdk-wayland-dev ! +# option: add also nativesdk-qtwayland-tools +TOOLCHAIN_HOST_TASK_append = " nativesdk-wayland nativesdk-wayland-dev" + +TOOLCHAIN_HOST_TASK_append = " nativesdk-perl-modules " diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb new file mode 100644 index 000000000..35989819e --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb @@ -0,0 +1,10 @@ +SUMMARY = "A very basic Wayland image with a terminal" + +require agl-image-graphical-qt5.inc + +LICENSE = "MIT" + +IMAGE_INSTALL_append = "\ + packagegroup-agl-image-weston \ + " + diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc new file mode 100644 index 000000000..ed1634fcc --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc @@ -0,0 +1,7 @@ +require recipes-platform/images/agl-image-minimal.inc + +IMAGE_FEATURES += "splash package-management ssh-server-dropbear" + +inherit distro_features_check + +REQUIRED_DISTRO_FEATURES = "wayland" diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb new file mode 100644 index 000000000..a05d69f53 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb @@ -0,0 +1,29 @@ +SUMMARY = "Qt5 for native GUI framework of AGL IVI profile" +DESCRIPTION = "A set of Qt5 packages which required by Native App Fw Subsystem" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-appfw-native-qt5 \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + qtbase \ + qtbase-dev \ + qtbase-plugins \ + qtbase-staticdev \ + qtbase-tools \ + qtdeclarative \ + qtdeclarative-qmlplugins \ + qtdeclarative-tools \ + qtcharts \ + qtwayland \ + qtwayland-plugins \ + qtwayland-tools \ + qtgraphicaleffects-qmlplugins \ + qtvirtualkeyboard \ + " diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb new file mode 100644 index 000000000..adebabe76 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb @@ -0,0 +1,26 @@ +SUMMARY = "The examples to test Qt5 on AGL Demo Platform" +DESCRIPTION = "A set of packages which contains Qt5 examples" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-demo-qt-examples \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + qt3d-examples \ + qtbase-examples \ + qtconnectivity-examples \ + qtdeclarative-examples \ + qtlocation-examples \ + qtmultimedia-examples \ + qtsensors-examples \ + qtsystems-examples \ + qttools-examples \ + qtwayland-examples \ + qtxmlpatterns-examples \ + " diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb new file mode 100644 index 000000000..74b35f70a --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb @@ -0,0 +1,23 @@ +SUMMARY = "The middlewares for AGL IVI profile" +DESCRIPTION = "The set of packages required for AGL Distribution" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-profile-graphical-qt5 \ + profile-graphical-qt5 \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-profile-graphical \ + packagegroup-agl-appfw-native-qt5 \ +" + +RDEPENDS_${PN} += "\ + agl-login-manager \ + " + +RDEPENDS_profile-graphical-qt5 = "${PN}" diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend new file mode 100644 index 000000000..300227e16 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend @@ -0,0 +1,23 @@ +# add missing dependencies for SDK + +RDEPENDS_${PN} += " \ + qttools-plugins \ + qtquickcontrols-dev \ + qtquickcontrols-qmlplugins \ + qtquickcontrols2-dev \ + qtquickcontrols2-mkspecs \ + qtquickcontrols2-qmlplugins \ +" + +# remove dependency on qtwebkit (still added to SDK by packagegroup-qt5-toolchain-target) +# see SPEC-1159 +RDEPENDS_${PN}_remove = " \ + qtwebkit-dev \ + qtwebkit-mkspecs \ + qtwebkit-qmlplugins \ +" + +# add QtAGLExtras +RDEPENDS_${PN} += " \ + ${@bb.utils.contains("DISTRO_FEATURES", "agl-hmi-framework", " qtaglextras-dev qtaglextras-mkspecs", "",d)} \ +" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb b/meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb new file mode 100644 index 000000000..dbeda2d11 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb @@ -0,0 +1,25 @@ +SUMMARY = "Execute Script QML plugin" +DESCRIPTION = "This provides a simple QML plugin able to execute script file." + +LICENSE = "CLOSED" + +DEPENDS = "qtbase-native qtdeclarative" + +SRC_URI = "git://github.com/ntanibata/qml-execscript-plugin.git;protocol=git;" +SRCREV = "1f05c44cccd8aef485d8df8206c8df4e5ad6f310" +S = "${WORKDIR}/git" + +inherit qmake5 + +EXTRA_OECONF = "--with-moc-dir=${STAGING_BINDIR_NATIVE}/qt5" +QML_LIBDIR = "${libdir}/qt5/qml" + +do_install() { + install -d ${D}${libdir}/qt5/qml/execScript/ + install -m 0755 execScript/*.so ${D}${libdir}/qt5/qml/execScript/ + install -m 0644 ../git/execScript/qmldir ${D}${libdir}/qt5/qml/execScript/ +} + +FILES_${PN} += "${QML_LIBDIR}/execScript/libexecscriptplugin.so" +FILES_${PN} += "${QML_LIBDIR}/execScript/qmldir" +FILES_${PN}-dbg += "${QML_LIBDIR}/execScript/.debug" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend new file mode 100644 index 000000000..b7cfe8dce --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend @@ -0,0 +1,3 @@ +# Backport this fix from meta-qt5: +# https://github.com/meta-qt5/meta-qt5/commit/bf7cdd963008f2d61bc4c324fff2bfafe511fb5f +SRC_URI_remove = "file://0012-qdbuscpp2xml.pro-do-not-build-with-bootstrapped-depe.patch" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch new file mode 100644 index 000000000..10a1ddd88 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch @@ -0,0 +1,30 @@ +From a4943bb5c7fdf5eb297223d2c3bb02d2271bea48 Mon Sep 17 00:00:00 2001 +From: Risto Avila +Date: Thu, 17 Dec 2015 04:22:53 +0200 +Subject: [PATCH] Force qdbus to make introspect for every findMetaObject + +--- + src/dbus/qdbusintegrator.cpp | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp +index cce8b9c..ae2a9dc 100644 +--- a/src/dbus/qdbusintegrator.cpp ++++ b/src/dbus/qdbusintegrator.cpp +@@ -2512,8 +2512,11 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa + if (!interface.isEmpty()) { + QDBusReadLocker locker(FindMetaObject1Action, this); + QDBusMetaObject *mo = cachedMetaObjects.value(interface, 0); +- if (mo) +- return mo; ++ if (mo) { ++ // service is not unique. Remove cached object to force introspect ++ cachedMetaObjects.remove(interface); ++ delete mo; ++ } + } + + // introspect the target object +-- +1.9.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend new file mode 100644 index 000000000..d568b1284 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend @@ -0,0 +1,16 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +DEPENDS_append_koelsch = " libegl" +#DEPENDS_append_porter = " libegl" +DEPENDS_append_porter = " ${@base_conditional('PREFERRED_PROVIDER_virtual/egl', 'mesa', 'mesa', 'libegl', d)}" + +PACKAGECONFIG_WAYLAND = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}" +PACKAGECONFIG_GL = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2', '', d)}" +PACKAGECONFIG_append = " ${PACKAGECONFIG_WAYLAND} icu accessibility" +PACKAGECONFIG_append = " fontconfig" +PACKAGECONFIG_append = " sql-sqlite" + +EXTRA_OECONF_append = "" + +# '-qpa wayland-egl' set wayland-egl as default of platform plagins +PACKAGECONFIG[wayland]="-qpa wayland-egl -no-qpa-platform-guard" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch new file mode 100644 index 000000000..007e46763 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch @@ -0,0 +1,80 @@ +From ed61f1d932c5c6d38458fcd2e1d5d154383f017e Mon Sep 17 00:00:00 2001 +From: Tasuku Suzuki +Date: Mon, 12 Dec 2016 16:32:47 +0900 +Subject: [PATCH] metadata image support with the "data" URL scheme for QtQuick + +add posterImage, coverArtImage and thumbnailImage to metadata + +Change-Id: I10b9bae10c219ffa41506d6e6b345020790217a6 +--- + .../multimedia/qdeclarativemediametadata_p.h | 33 ++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/src/imports/multimedia/qdeclarativemediametadata_p.h b/src/imports/multimedia/qdeclarativemediametadata_p.h +index ede7f87..6a6a815 100644 +--- a/src/imports/multimedia/qdeclarativemediametadata_p.h ++++ b/src/imports/multimedia/qdeclarativemediametadata_p.h +@@ -51,6 +51,9 @@ + // We mean it. + // + ++#include ++#include ++#include + #include + #include + #include +@@ -153,6 +156,9 @@ class QDeclarativeMediaMetaData : public QObject + Q_PROPERTY(QVariant gpsProcessingMethod READ gpsProcessingMethod WRITE setGPSProcessingMethod NOTIFY metaDataChanged) + Q_PROPERTY(QVariant gpsAreaInformation READ gpsAreaInformation WRITE setGPSAreaInformation NOTIFY metaDataChanged) + ++ Q_PROPERTY(QVariant posterImage READ posterImage NOTIFY metaDataChanged) ++ Q_PROPERTY(QVariant coverArtImage READ coverArtImage NOTIFY metaDataChanged) ++ Q_PROPERTY(QVariant thumbnailImage READ thumbnailImage NOTIFY metaDataChanged) + public: + QDeclarativeMediaMetaData(QMediaObject *player, QObject *parent = 0) + : QObject(parent) +@@ -425,6 +431,16 @@ QT_WARNING_POP + void setGPSAreaInformation(const QVariant &information) { + setMetaData(QMediaMetaData::GPSAreaInformation, information); } + ++ QVariant posterImage() const { ++ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::PosterImage)); ++ } ++ QVariant coverArtImage() const { ++ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::CoverArtImage)); ++ } ++ QVariant thumbnailImage() const { ++ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::ThumbnailImage)); ++ } ++ + Q_SIGNALS: + void metaDataChanged(); + +@@ -440,6 +456,23 @@ private: + m_writerControl->setMetaData(key, value); + } + ++ QUrl convertImageToUrl(const QVariant &variant) const ++ { ++ if (variant.type() != QVariant::Image) ++ return QUrl(); ++ ++ QImage image = variant.value(); ++ QByteArray data; ++ QBuffer buffer(&data); ++ buffer.open(QBuffer::WriteOnly); ++ QImageWriter png(&buffer, "png"); ++ if (!png.write(image)) { ++ return QUrl(); ++ } ++ buffer.close(); ++ return QUrl(QStringLiteral("data:image/png;base64,") + data.toBase64()); ++ } ++ + QMediaObject *m_mediaObject; + QMetaDataWriterControl *m_writerControl; + bool m_requestedWriterControl; +-- +2.7.4 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend new file mode 100644 index 000000000..a06ac2d89 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend @@ -0,0 +1,7 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" + +PACKAGECONFIG_append = " gstreamer" + +SRC_URI_append = " \ + file://0001-metadata-image-support-with-the-data-URL-scheme-for-.patch \ + " diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend new file mode 100644 index 000000000..550c58d05 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend @@ -0,0 +1,3 @@ +DEPENDS_remove = "bluez4" +# currently Qt5 does not support bluez5 "Nothing PROVIDES 'gconfbluez5'" +#DEPENDS_append = "bluez5" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-Implement-initial-IVI-shell-support-with-shell-integ.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-Implement-initial-IVI-shell-support-with-shell-integ.patch new file mode 100644 index 000000000..9495dcc88 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-Implement-initial-IVI-shell-support-with-shell-integ.patch @@ -0,0 +1,693 @@ +From f41ceb82b1adb1bae15d36a426bf39ea0e75cb68 Mon Sep 17 00:00:00 2001 +From: Nobuhiko Tanibata +Date: Thu, 5 Nov 2015 20:13:26 +0900 +Subject: [PATCH 1/2] Implement initial IVI-shell support with shell + integration. + +QApplication can set numeric surface ID to its surface by +following steps +------------------------------------------------------- +#include +#include + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + QQuickView view(QUrl(QStringLiteral("qrc:/main.qml"))); + + view.setProperty("IVI-Surface-ID", 8000); + view.show(); + return app.exec(); +} +------------------------------------------------------- + +If QApplication doesn't set the surface ID by itself, the ID is +automatically assigned by qtwayland from 8000. When the application creates +several surfaces, the ID is incremented like 8001,8002,,,,. + +Additionally, qtwayland now supports shell integration Framework. So +The enviromental value QT_WAYLAND_SHELL_INTEGRATION=ivi-shell are required for +Qt application. + +Signed-off-by: Nobuhiko Tanibata +--- + .gitignore | 6 ++ + src/3rdparty/protocol/ivi-application.xml | 99 +++++++++++++++++++ + src/client/client.pro | 3 +- + src/plugins/plugins.pro | 3 +- + .../shellintegration/ivi-shell/ivi-shell.json | 3 + + .../shellintegration/ivi-shell/ivi-shell.pro | 30 ++++++ + src/plugins/shellintegration/ivi-shell/main.cpp | 69 +++++++++++++ + .../ivi-shell/qwaylandivishellintegration.cpp | 109 +++++++++++++++++++++ + .../ivi-shell/qwaylandivishellintegration.h | 79 +++++++++++++++ + .../ivi-shell/qwaylandivisurface.cpp | 71 ++++++++++++++ + .../ivi-shell/qwaylandivisurface_p.h | 76 ++++++++++++++ + src/plugins/shellintegration/shellintegration.pro | 3 + + 12 files changed, 549 insertions(+), 2 deletions(-) + create mode 100644 src/3rdparty/protocol/ivi-application.xml + create mode 100644 src/plugins/shellintegration/ivi-shell/ivi-shell.json + create mode 100644 src/plugins/shellintegration/ivi-shell/ivi-shell.pro + create mode 100644 src/plugins/shellintegration/ivi-shell/main.cpp + create mode 100644 src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp + create mode 100644 src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h + create mode 100644 src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp + create mode 100644 src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h + create mode 100644 src/plugins/shellintegration/shellintegration.pro + +diff --git a/.gitignore b/.gitignore +index b33ca90..924afb2 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -61,6 +61,12 @@ src/plugins/hardwareintegration/*/*/qwayland*.h + src/plugins/hardwareintegration/*/*/*-server-protocol.h + src/plugins/hardwareintegration/*/*/*-client-protocol.h + src/plugins/hardwareintegration/*/*/*-protocol.c ++src/plugins/shellintegration/ivi-shell/qwayland-ivi-application.h ++src/plugins/shellintegration/ivi-shell/qwayland-ivi-application.cpp ++src/plugins/shellintegration/ivi-shell/qwayland-ivi-controller.h ++src/plugins/shellintegration/ivi-shell/qwayland-ivi-controller.cpp ++src/plugins/shellintegration/*/*-client-protocol.h ++src/plugins/shellintegration/*/*-protocol.c + tests/auto/client/tst_client + tests/auto/compositor/tst_compositor + *~ +diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml +new file mode 100644 +index 0000000..61ec7d2 +--- /dev/null ++++ b/src/3rdparty/protocol/ivi-application.xml +@@ -0,0 +1,99 @@ ++ ++ ++ ++ ++ Copyright (C) 2013 DENSO CORPORATION ++ Copyright (c) 2013 BMW Car IT GmbH ++ ++ Permission to use, copy, modify, distribute, and sell this software and ++ its documentation for any purpose is hereby granted without fee, provided ++ that the above copyright notice appear in all copies and that both that ++ copyright notice and this permission notice appear in supporting ++ documentation, and that the name of the copyright holders not be used in ++ advertising or publicity pertaining to distribution of the software ++ without specific, written prior permission. The copyright holders make ++ no representations about the suitability of this software for any ++ purpose. It is provided "as is" without express or implied warranty. ++ ++ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS ++ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND ++ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY ++ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ++ RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF ++ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ++ ++ ++ ++ ++ ++ This removes link from ivi_id to wl_surface and destroys ivi_surface. ++ The ID, ivi_id, is free and can be used for surface_create again. ++ ++ ++ ++ ++ ++ The configure event asks the client to resize its surface. ++ ++ The size is a hint, in the sense that the client is free to ++ ignore it if it doesn't resize, pick a smaller size (to ++ satisfy aspect ratio or resize in steps of NxM pixels). ++ ++ The client is free to dismiss all but the last configure ++ event it received. ++ ++ The width and height arguments specify the size of the window ++ in surface local coordinates. ++ ++ ++ ++ ++ ++ ++ ++ ++ This interface is exposed as a global singleton. ++ This interface is implemented by servers that provide IVI-style user interfaces. ++ It allows clients to associate a ivi_surface with wl_surface. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ This request gives the wl_surface the role of an IVI Surface. Creating more than ++ one ivi_surface for a wl_surface is not allowed. Note, that this still allows the ++ following example: ++ ++ 1. create a wl_surface ++ 2. create ivi_surface for the wl_surface ++ 3. destroy the ivi_surface ++ 4. create ivi_surface for the wl_surface (with the same or another ivi_id as before) ++ ++ surface_create will create a interface:ivi_surface with numeric ID; ivi_id in ++ ivi compositor. These ivi_ids are defined as unique in the system to identify ++ it inside of ivi compositor. The ivi compositor implements business logic how to ++ set properties of the surface with ivi_id according to status of the system. ++ E.g. a unique ID for Car Navigation application is used for implementing special ++ logic of the application about where it shall be located. ++ The server regards following cases as protocol errors and disconnects the client. ++ - wl_surface already has an nother role. ++ - ivi_id is already assigned to an another wl_surface. ++ ++ If client destroys ivi_surface or wl_surface which is assigne to the ivi_surface, ++ ivi_id which is assigned to the ivi_surface is free for reuse. ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/src/client/client.pro b/src/client/client.pro +index 0c13a4a..ca48cce 100644 +--- a/src/client/client.pro ++++ b/src/client/client.pro +@@ -6,7 +6,8 @@ MODULE=waylandclient + MODULE_PLUGIN_TYPES = \ + wayland-graphics-integration-client \ + wayland-inputdevice-integration \ +- wayland-decoration-client ++ wayland-decoration-client \ ++ wayland-shell-integration + + CONFIG += generated_privates + +diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro +index a1a8a5b..9b66b85 100644 +--- a/src/plugins/plugins.pro ++++ b/src/plugins/plugins.pro +@@ -2,4 +2,5 @@ TEMPLATE=subdirs + SUBDIRS += \ + platforms \ + hardwareintegration \ +- decorations ++ decorations \ ++ shellintegration +diff --git a/src/plugins/shellintegration/ivi-shell/ivi-shell.json b/src/plugins/shellintegration/ivi-shell/ivi-shell.json +new file mode 100644 +index 0000000..c48528e +--- /dev/null ++++ b/src/plugins/shellintegration/ivi-shell/ivi-shell.json +@@ -0,0 +1,3 @@ ++{ ++ "Keys":[ "ivi-shell" ] ++} +diff --git a/src/plugins/shellintegration/ivi-shell/ivi-shell.pro b/src/plugins/shellintegration/ivi-shell/ivi-shell.pro +new file mode 100644 +index 0000000..ac12858 +--- /dev/null ++++ b/src/plugins/shellintegration/ivi-shell/ivi-shell.pro +@@ -0,0 +1,30 @@ ++PLUGIN_TYPE = wayland-shell-integration ++load(qt_plugin) ++ ++QT += waylandclient-private ++CONFIG += wayland-scanner ++ ++!contains(QT_CONFIG, no-pkg-config) { ++ PKGCONFIG += wayland-client wayland-cursor ++ CONFIG += link_pkgconfig ++ contains(QT_CONFIG, glib): PKGCONFIG_PRIVATE += glib-2.0 ++} else { ++ LIBS += -lwayland-client -lwayland-cursor $$QT_LIBS_GLIB ++} ++ ++WAYLANDCLIENTSOURCES += \ ++ ../../../3rdparty/protocol/ivi-application.xml ++ ++include(../../../../include/QtWaylandClient/headers.pri) ++ ++HEADERS += \ ++ qwaylandivishellintegration.h \ ++ qwaylandivisurface_p.h ++ ++SOURCES += \ ++ main.cpp \ ++ qwaylandivishellintegration.cpp \ ++ qwaylandivisurface.cpp ++ ++OTHER_FILES += \ ++ ivi-shell.json +diff --git a/src/plugins/shellintegration/ivi-shell/main.cpp b/src/plugins/shellintegration/ivi-shell/main.cpp +new file mode 100644 +index 0000000..2382ff7 +--- /dev/null ++++ b/src/plugins/shellintegration/ivi-shell/main.cpp +@@ -0,0 +1,69 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 ITAGE Corporation, author: ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include ++#include "qwaylandivishellintegration.h" ++ ++QT_BEGIN_NAMESPACE ++ ++namespace QtWaylandClient { ++ ++class QWaylandIviShellIntegrationPlugin : public QWaylandShellIntegrationPlugin ++{ ++ Q_OBJECT ++ Q_PLUGIN_METADATA(IID QWaylandShellIntegrationFactoryInterface_iid FILE "ivi-shell.json") ++ ++public: ++ virtual QWaylandShellIntegration *create(const QString &key, const QStringList ¶mList) Q_DECL_OVERRIDE; ++}; ++ ++QWaylandShellIntegration *QWaylandIviShellIntegrationPlugin::create(const QString &key, const QStringList ¶mList) ++{ ++ Q_UNUSED(key); ++ Q_UNUSED(paramList); ++ return new QWaylandIviShellIntegration(); ++} ++ ++} ++ ++QT_END_NAMESPACE ++ ++#include "main.moc" +diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp +new file mode 100644 +index 0000000..763fafb +--- /dev/null ++++ b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp +@@ -0,0 +1,109 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 ITAGE Corporation, author: ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include "qwaylandivishellintegration.h" ++#include "qwaylandivisurface_p.h" ++#include "qwayland-ivi-application.h" ++ ++QT_BEGIN_NAMESPACE ++ ++namespace QtWaylandClient { ++ ++QWaylandIviShellIntegration::QWaylandIviShellIntegration() ++ : m_iviApplication(Q_NULLPTR) ++{ ++} ++ ++QWaylandIviShellIntegration::~QWaylandIviShellIntegration() ++{ ++ delete m_iviApplication; ++} ++ ++bool QWaylandIviShellIntegration::initialize(QWaylandDisplay *display) ++{ ++ display->addRegistryListener(registryIvi, this); ++ ++ return true; ++} ++ ++QWaylandShellSurface *QWaylandIviShellIntegration::createShellSurface(QWaylandWindow *window) ++{ ++ const int IVI_SURFACE_ID = 8000; ++ if (!m_iviApplication) ++ return Q_NULLPTR; ++ ++ uint32_t id = 0; ++ QVariant value = window->property("IVI-Surface-ID"); ++ if (value.isValid()) { ++ id = value.toUInt(); ++ } else { ++ id = IVI_SURFACE_ID + getpid(); ++ } ++ ++ struct ivi_surface *surface = m_iviApplication->surface_create(id, window->object()); ++ ++ return new QWaylandIviSurface(surface, window); ++} ++ ++void QWaylandIviShellIntegration::registryIvi(void *data, ++ struct wl_registry *registry, ++ uint32_t id, ++ const QString &interface, ++ uint32_t version) ++{ ++ QWaylandIviShellIntegration *shell = static_cast(data); ++ ++ if (interface == QStringLiteral("ivi_application")) ++ shell->m_iviApplication = new QtWayland::ivi_application(registry, id, version); ++} ++ ++} ++ ++QT_END_NAMESPACE +diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h +new file mode 100644 +index 0000000..4856ec6 +--- /dev/null ++++ b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h +@@ -0,0 +1,79 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 ITAGE Corporation, author: ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QWAYLANDIVIINTEGRATION_H ++#define QWAYLANDIVIINTEGRATION_H ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace QtWayland { ++ struct wl_registry; ++ class ivi_application; ++} ++ ++namespace QtWaylandClient { ++ ++class QWaylandWindow; ++class QWaylandDisplay; ++ ++class Q_WAYLAND_CLIENT_EXPORT QWaylandIviShellIntegration : public QWaylandShellIntegration ++{ ++public: ++ QWaylandIviShellIntegration(); ++ ~QWaylandIviShellIntegration(); ++ bool initialize(QWaylandDisplay *display); ++ QWaylandShellSurface *createShellSurface(QWaylandWindow *window); ++ ++private: ++ static void registryIvi(void *data, struct wl_registry *registry ++ , uint32_t id, const QString &interface, uint32_t version); ++ ++private: ++ QtWayland::ivi_application *m_iviApplication; ++}; ++ ++} ++ ++QT_END_NAMESPACE ++ ++#endif // QWAYLANDIVIINTEGRATION_H +diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp +new file mode 100644 +index 0000000..3ce3b4e +--- /dev/null ++++ b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp +@@ -0,0 +1,71 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include ++#include ++#include ++#include ++#include "qwaylandivisurface_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++namespace QtWaylandClient { ++ ++QWaylandIviSurface::QWaylandIviSurface(struct ::ivi_surface *ivi_surface, QWaylandWindow *window) ++ : QtWayland::ivi_surface(ivi_surface) ++ , QWaylandShellSurface(window) ++ , m_window(window) ++{ ++} ++ ++QWaylandIviSurface::~QWaylandIviSurface() ++{ ++ ivi_surface::destroy(); ++} ++ ++void QWaylandIviSurface::ivi_surface_configure(int32_t width, int32_t height) ++{ ++ this->m_window->configure(0, width, height); ++} ++ ++} ++ ++QT_END_NAMESPACE +diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h +new file mode 100644 +index 0000000..d8331c5 +--- /dev/null ++++ b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h +@@ -0,0 +1,76 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QWAYLANDIVISURFACE_H ++#define QWAYLANDIVISURFACE_H ++ ++#include ++ ++#include ++#include ++#include "qwayland-ivi-application.h" ++ ++QT_BEGIN_NAMESPACE ++ ++namespace QtWaylandClient { ++ ++class QWaylandWindow; ++ ++class Q_WAYLAND_CLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface ++ , public QWaylandShellSurface ++{ ++public: ++ QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window); ++ virtual ~QWaylandIviSurface(); ++ ++private: ++ virtual void ivi_surface_configure(int32_t width, int32_t height); ++ ++ QWaylandWindow *m_window; ++ ++ friend class QWaylandWindow; ++}; ++ ++} ++ ++QT_END_NAMESPACE ++ ++#endif // QWAYLANDIVISURFACE_H +diff --git a/src/plugins/shellintegration/shellintegration.pro b/src/plugins/shellintegration/shellintegration.pro +new file mode 100644 +index 0000000..7abd6cc +--- /dev/null ++++ b/src/plugins/shellintegration/shellintegration.pro +@@ -0,0 +1,3 @@ ++TEMPLATE=subdirs ++ ++SUBDIRS += ivi-shell +-- +1.8.3.1 diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch new file mode 100644 index 000000000..c91e11704 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch @@ -0,0 +1,56 @@ +From 8caaf802a8b42e9bb1d74fc335a571882c75d73e Mon Sep 17 00:00:00 2001 +From: Holger Behrens +Date: Tue, 3 Feb 2015 09:52:52 +0100 +Subject: [meta-ivi-demo][PATCH 1/2] protocol: update 3rd party ivi-application + protocol + +Signed-off-by: Holger Behrens +--- + src/3rdparty/protocol/ivi-application.xml | 31 +++---------------------------- + 1 file changed, 3 insertions(+), 28 deletions(-) + +diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml +index 833fd38..b06ae6c 100644 +--- a/src/3rdparty/protocol/ivi-application.xml ++++ b/src/3rdparty/protocol/ivi-application.xml +@@ -42,34 +42,9 @@ + + + +- +- +- These define all possible warning codes returned by ivi compositor on server-side warnings. +- invalid_wl_surface: +- - wl_surface already has a another role. +- - wl_surface is destroyed before the ivi_surface is destroyed. +- ivi_id_in_use: ivi_id is already assigned by another application. +- +- +- +- +- +- +- +- The ivi compositor encountered warning while processing a request by this +- application. The warning is defined by argument warning_code and optional +- warning_text. If the warning is detected, client shall destroy the ivi_surface +- object. +- +- When a warning event is sent, the compositor turns the ivi_surface object inert. +- The ivi_surface will not deliver further events, all requests on it are ignored +- except 'destroy', and the association to the ivi_id is removed. The client +- should destroy the ivi_surface object. If an inert ivi_surface object is used as +- an argument to any other object's request, that request will [produce a fatal +- error / produce a warning / be ignored]. +- +- +- ++ ++ ++ + + + +-- +2.2.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-Fix-multiple-QWindow.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-Fix-multiple-QWindow.patch new file mode 100644 index 000000000..177710516 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-Fix-multiple-QWindow.patch @@ -0,0 +1,62 @@ +From 23534d35587a8b62c945fef1adb29109e5c01bfa Mon Sep 17 00:00:00 2001 +From: Nobuhiko Tanibata +Date: Fri, 6 Nov 2015 09:59:48 +0900 +Subject: [PATCH 2/2] Fix multiple QWindow + +Signed-off-by: Nobuhiko Tanibata +--- + .../ivi-shell/qwaylandivishellintegration.cpp | 16 ++++++++++------ + .../ivi-shell/qwaylandivishellintegration.h | 1 + + 2 files changed, 11 insertions(+), 6 deletions(-) + +diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp +index 763fafb..c42f283 100644 +--- a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp ++++ b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.cpp +@@ -58,6 +58,7 @@ namespace QtWaylandClient { + + QWaylandIviShellIntegration::QWaylandIviShellIntegration() + : m_iviApplication(Q_NULLPTR) ++ , m_surfaceId(0) + { + } + +@@ -79,15 +80,18 @@ QWaylandShellSurface *QWaylandIviShellIntegration::createShellSurface(QWaylandWi + if (!m_iviApplication) + return Q_NULLPTR; + +- uint32_t id = 0; +- QVariant value = window->property("IVI-Surface-ID"); +- if (value.isValid()) { +- id = value.toUInt(); ++ if (m_surfaceId == 0) { ++ QVariant value = window->property("IVI-Surface-ID"); ++ if (value.isValid()) { ++ m_surfaceId = value.toUInt(); ++ } else { ++ m_surfaceId = IVI_SURFACE_ID + getpid(); ++ } + } else { +- id = IVI_SURFACE_ID + getpid(); ++ m_surfaceId++; + } + +- struct ivi_surface *surface = m_iviApplication->surface_create(id, window->object()); ++ struct ivi_surface *surface = m_iviApplication->surface_create(m_surfaceId, window->object()); + + return new QWaylandIviSurface(surface, window); + } +diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h +index 4856ec6..1d10e91 100644 +--- a/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h ++++ b/src/plugins/shellintegration/ivi-shell/qwaylandivishellintegration.h +@@ -70,6 +70,7 @@ private: + + private: + QtWayland::ivi_application *m_iviApplication; ++ uint32_t m_surfaceId; + }; + + } +-- +1.8.3.1 diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch new file mode 100644 index 000000000..591ef71c5 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch @@ -0,0 +1,34 @@ +From 31c60aedf415fd06b5c1aa16fdcef1504b67b96d Mon Sep 17 00:00:00 2001 +From: Holger Behrens +Date: Tue, 3 Feb 2015 09:53:43 +0100 +Subject: [meta-ivi-demo][PATCH 2/2] qwaylandwindow: add support for + IVI-Surface-ID property + +Signed-off-by: Holger Behrens +--- + src/client/qwaylandwindow.cpp | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 45a58f2..781081a 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -100,7 +100,14 @@ QWaylandWindow::QWaylandWindow(QWindow *window) + + if (!(window->flags() & Qt::BypassWindowManagerHint)) { + if (mDisplay->shellIvi()) { +- mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this); ++ unsigned int id = 0; ++ QVariant value = window->property("IVI-Surface-ID"); ++ if (value.isValid()) { ++ id = value.toUInt(); ++ } else { ++ id = IVI_SURFACE_ID + getpid(); ++ } ++ mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(id, object()), this); + } else if (mDisplay->shellXdg()) { + if (window->type() & Qt::Window) { + mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); +-- +2.2.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch new file mode 100644 index 000000000..39296c769 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch @@ -0,0 +1,33 @@ +Add qt5wayland.manifest. Removed specfile change from patch. + +Adapted from: + +From 424c23191d81b072255bd7f178ad0ee2c2ea091a Mon Sep 17 00:00:00 2001 +From: Tomasz Olszak +Date: Fri, 25 Apr 2014 14:32:22 +0200 +Subject: [PATCH 10/21] Added manifest file according to smack 3-domain model. + +Bug-Tizen:TIVI-2416 + +Change-Id: I414e245a5c8847bec32ef6a97569d0f06221e1db +Signed-off-by: Tomasz Olszak +--- + packaging/qt5-qtwayland.manifest | 5 +++++ + packaging/qt5-qtwayland.spec | 4 ++++ + 2 files changed, 9 insertions(+) + create mode 100644 packaging/qt5-qtwayland.manifest + +diff --git a/packaging/qt5-qtwayland.manifest b/packaging/qt5-qtwayland.manifest +new file mode 100644 +index 0000000..75b0fa5 +--- /dev/null ++++ b/packaging/qt5-qtwayland.manifest +@@ -0,0 +1,5 @@ ++ ++ ++ ++ ++ +-- +1.9.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch new file mode 100644 index 000000000..6bea62621 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch @@ -0,0 +1,468 @@ +From 5cd43dc7519f54f9786fb6c686a2ce1e682d4366 Mon Sep 17 00:00:00 2001 +From: Philippe Coval +Date: Fri, 25 Apr 2014 10:31:42 +0200 +Subject: [PATCH 16/21] xdg-shell: Add xdg-shell protocol file version 1.4.0 + +Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.4.0 + +This file will need to be refreshed on protocol update +until xdg-shell land in wayland's public headers + +Task-number: QTBUG-38633/part/1of2 +Change-Id: I397d863dcfc2223ac6eb234c37dbcd7449ecffff +Reviewed-by: Giulio Camuffo +Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/c2a22eea6716e073875474adf624d8463eba836c +Bug-Tizen: TIVI-3113/part +Signed-off-by: Philippe Coval +--- + src/3rdparty/protocol/xdg-shell.xml | 438 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 438 insertions(+) + create mode 100644 src/3rdparty/protocol/xdg-shell.xml + +diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml +new file mode 100644 +index 0000000..4e5cff8 +--- /dev/null ++++ b/src/3rdparty/protocol/xdg-shell.xml +@@ -0,0 +1,438 @@ ++ ++ ++ ++ ++ Copyright © 2008-2013 Kristian Høgsberg ++ Copyright © 2013 Rafael Antognolli ++ Copyright © 2013 Jasper St. Pierre ++ Copyright © 2010-2013 Intel Corporation ++ ++ Permission to use, copy, modify, distribute, and sell this ++ software and its documentation for any purpose is hereby granted ++ without fee, provided that the above copyright notice appear in ++ all copies and that both that copyright notice and this permission ++ notice appear in supporting documentation, and that the name of ++ the copyright holders not be used in advertising or publicity ++ pertaining to distribution of the software without specific, ++ written prior permission. The copyright holders make no ++ representations about the suitability of this software for any ++ purpose. It is provided "as is" without express or implied ++ warranty. ++ ++ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS ++ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND ++ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY ++ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ++ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ++ THIS SOFTWARE. ++ ++ ++ ++ ++ This interface is implemented by servers that provide ++ desktop-style user interfaces. ++ ++ It allows clients to associate a xdg_surface with ++ a basic surface. ++ ++ ++ ++ ++ Use this enum to check the protocol version, and it will be updated ++ automatically. ++ ++ ++ ++ ++ ++ ++ ++ Use this request in order to enable use of this interface. ++ ++ Understand and agree that one is using an unstable interface, ++ that will likely change in the future, breaking the API. ++ ++ ++ ++ ++ ++ ++ Create a shell surface for an existing surface. ++ ++ Only one shell or popup surface can be associated with a given ++ surface. ++ ++ ++ ++ ++ ++ ++ ++ Create a popup surface for an existing surface. ++ ++ Only one shell or popup surface can be associated with a given ++ surface. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ An interface that may be implemented by a wl_surface, for ++ implementations that provide a desktop-style user interface. ++ ++ It provides requests to treat surfaces like windows, allowing to set ++ properties like maximized, fullscreen, minimized, and to move and resize ++ them, and associate metadata like title and app id. ++ ++ On the server side the object is automatically destroyed when ++ the related wl_surface is destroyed. On client side, ++ xdg_surface.destroy() must be called before destroying ++ the wl_surface object. ++ ++ ++ ++ ++ The xdg_surface interface is removed from the wl_surface object ++ that was turned into a xdg_surface with ++ xdg_shell.get_xdg_surface request. The xdg_surface properties, ++ like maximized and fullscreen, are lost. The wl_surface loses ++ its role as a xdg_surface. The wl_surface is unmapped. ++ ++ ++ ++ ++ ++ Setting a surface as transient of another means that it is child ++ of another surface. ++ ++ Child surfaces are stacked above their parents, and will be ++ unmapped if the parent is unmapped too. They should not appear ++ on task bars and alt+tab. ++ ++ ++ ++ ++ ++ ++ Set a short title for the surface. ++ ++ This string may be used to identify the surface in a task bar, ++ window list, or other user interface elements provided by the ++ compositor. ++ ++ The string must be encoded in UTF-8. ++ ++ ++ ++ ++ ++ ++ Set an id for the surface. ++ ++ The app id identifies the general class of applications to which ++ the surface belongs. ++ ++ It should be the ID that appears in the new desktop entry ++ specification, the interface name. ++ ++ ++ ++ ++ ++ ++ A client must respond to a ping event with a pong request or ++ the client may be deemed unresponsive. ++ ++ ++ ++ ++ ++ ++ Ping a client to check if it is receiving events and sending ++ requests. A client is expected to reply with a pong request. ++ ++ ++ ++ ++ ++ ++ Start a pointer-driven move of the surface. ++ ++ This request must be used in response to a button press event. ++ The server may ignore move requests depending on the state of ++ the surface (e.g. fullscreen or maximized). ++ ++ ++ ++ ++ ++ ++ ++ These values are used to indicate which edge of a surface ++ is being dragged in a resize operation. The server may ++ use this information to adapt its behavior, e.g. choose ++ an appropriate cursor image. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Start a pointer-driven resizing of the surface. ++ ++ This request must be used in response to a button press event. ++ The server may ignore resize requests depending on the state of ++ the surface (e.g. fullscreen or maximized). ++ ++ ++ ++ ++ ++ ++ ++ ++ The configure event asks the client to resize its surface. ++ ++ The size is a hint, in the sense that the client is free to ++ ignore it if it doesn't resize, pick a smaller size (to ++ satisfy aspect ratio or resize in steps of NxM pixels). ++ ++ The edges parameter provides a hint about how the surface ++ was resized. The client may use this information to decide ++ how to adjust its content to the new size (e.g. a scrolling ++ area might adjust its content position to leave the viewable ++ content unmoved). Valid edge values are from resize_edge enum. ++ ++ The client is free to dismiss all but the last configure ++ event it received. ++ ++ The width and height arguments specify the size of the window ++ in surface local coordinates. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Set the default output used by this surface when it is first mapped. ++ ++ If this value is NULL (default), it's up to the compositor to choose ++ which display will be used to map this surface. ++ ++ When fullscreen or maximized state are set on this surface, and it ++ wasn't mapped yet, the output set with this method will be used. ++ Otherwise, the output where the surface is currently mapped will be ++ used. ++ ++ ++ ++ ++ ++ ++ Event sent from the compositor to the client requesting that the client ++ goes to a fullscreen state. It's the client job to call set_fullscreen ++ and really trigger the fullscreen state. ++ ++ ++ ++ ++ ++ Event sent from the compositor to the client requesting that the client ++ leaves the fullscreen state. It's the client job to call ++ unset_fullscreen and really leave the fullscreen state. ++ ++ ++ ++ ++ ++ Set the surface as fullscreen. ++ ++ After this request, the compositor should send a configure event ++ informing the output size. ++ ++ This request informs the compositor that the next attached buffer ++ committed will be in a fullscreen state. The buffer size should be the ++ same size as the size informed in the configure event, if the client ++ doesn't want to leave any empty area. ++ ++ In other words: the next attached buffer after set_maximized is the new ++ maximized buffer. And the surface will be positioned at the maximized ++ position on commit. ++ ++ A simple way to synchronize and wait for the correct configure event is ++ to use a wl_display.sync request right after the set_fullscreen ++ request. When the sync callback returns, the last configure event ++ received just before it will be the correct one, and should contain the ++ right size for the surface to maximize. ++ ++ Setting one state won't unset another state. Use ++ xdg_surface.unset_fullscreen for unsetting it. ++ ++ ++ ++ ++ ++ Unset the surface fullscreen state. ++ ++ Same negotiation as set_fullscreen must be used. ++ ++ ++ ++ ++ ++ Event sent from the compositor to the client requesting that the client ++ goes to a maximized state. It's the client job to call set_maximized ++ and really trigger the maximized state. ++ ++ ++ ++ ++ ++ Event sent from the compositor to the client requesting that the client ++ leaves the maximized state. It's the client job to call unset_maximized ++ and really leave the maximized state. ++ ++ ++ ++ ++ ++ Set the surface as maximized. ++ ++ After this request, the compositor will send a configure event ++ informing the output size minus panel and other MW decorations. ++ ++ This request informs the compositor that the next attached buffer ++ committed will be in a maximized state. The buffer size should be the ++ same size as the size informed in the configure event, if the client ++ doesn't want to leave any empty area. ++ ++ In other words: the next attached buffer after set_maximized is the new ++ maximized buffer. And the surface will be positioned at the maximized ++ position on commit. ++ ++ A simple way to synchronize and wait for the correct configure event is ++ to use a wl_display.sync request right after the set_maximized request. ++ When the sync callback returns, the last configure event received just ++ before it will be the correct one, and should contain the right size ++ for the surface to maximize. ++ ++ Setting one state won't unset another state. Use ++ xdg_surface.unset_maximized for unsetting it. ++ ++ ++ ++ ++ ++ Unset the surface maximized state. ++ ++ Same negotiation as set_maximized must be used. ++ ++ ++ ++ ++ ++ Set the surface minimized state. ++ ++ Setting one state won't unset another state. ++ ++ ++ ++ ++ ++ The focused_set event is sent when this surface has been ++ activated. Window decorations should be updated accordingly. ++ ++ ++ ++ ++ ++ The focused_unset event is sent when this surface has been ++ deactivated, because another surface has been activated. Window ++ decorations should be updated accordingly. ++ ++ ++ ++ ++ ++ ++ An interface that may be implemented by a wl_surface, for ++ implementations that provide a desktop-style popups/menus. A popup ++ surface is a transient surface with an added pointer grab. ++ ++ An existing implicit grab will be changed to owner-events mode, ++ and the popup grab will continue after the implicit grab ends ++ (i.e. releasing the mouse button does not cause the popup to be ++ unmapped). ++ ++ The popup grab continues until the window is destroyed or a mouse ++ button is pressed in any other clients window. A click in any of ++ the clients surfaces is reported as normal, however, clicks in ++ other clients surfaces will be discarded and trigger the callback. ++ ++ The x and y arguments specify the locations of the upper left ++ corner of the surface relative to the upper left corner of the ++ parent surface, in surface local coordinates. ++ ++ xdg_popup surfaces are always transient for another surface. ++ ++ ++ ++ ++ The xdg_surface interface is removed from the wl_surface object ++ that was turned into a xdg_surface with ++ xdg_shell.get_xdg_surface request. The xdg_surface properties, ++ like maximized and fullscreen, are lost. The wl_surface loses ++ its role as a xdg_surface. The wl_surface is unmapped. ++ ++ ++ ++ ++ ++ A client must respond to a ping event with a pong request or ++ the client may be deemed unresponsive. ++ ++ ++ ++ ++ ++ ++ Ping a client to check if it is receiving events and sending ++ requests. A client is expected to reply with a pong request. ++ ++ ++ ++ ++ ++ ++ The popup_done event is sent out when a popup grab is broken, ++ that is, when the users clicks a surface that doesn't belong ++ to the client owning the popup surface. ++ ++ ++ ++ ++ ++ +-- +1.9.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch new file mode 100644 index 000000000..fe1bb50e8 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch @@ -0,0 +1,1029 @@ +From 0edba039247ce888dbb7ff0a93c7b9ec01bac46e Mon Sep 17 00:00:00 2001 +From: Philippe Coval +Date: Wed, 26 Mar 2014 10:16:01 +0100 +Subject: [PATCH 17/21] xdg-shell: Add minimize feature to QWindow using + wayland's xdg-shell + +The feature is disabled by default, +and can be enabled at runtime +by exporting QT_WAYLAND_USE_XDG_SHELL env variable. + +This patch relies on presence of protocol file +which has been imported from weston-1.4.0 sources, +until the xdg-shell is merge into wayland itself. + +Because xdg-shell is experimental, +code fallback to WaylandShell if no XdgShell +but keep in mind those shells are exclusive. + +Since xdg-shell and wayland-shell share most of the API, +some factorization is done by an (empty) abstraction class +to keep the code more readable. + +Despite xdg-shell introduces new popups concept, +they're not used on this change for maitainance purpose. + +Notes: + +* This change depends on presence of xdg-shell protocol file. + +* You can check a demo video + (qt-tizen-cinematic-experience-20140430-rzr) + of the test case at : + https://www.youtube.com/watch?v=pY_XXvKc_0E# + +* Use Super+Tab to show window again if hidden + +Task-number: QTBUG-38633/part/2of2 +Change-Id: I2d7ed85bea1847d82439fdfc893a3dbb2581ffff +Reviewed-by: Giulio Camuffo +Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/768484daaa64bea965bef981a16f59be8db0c190 +Bug-Tizen: TIVI-3113/part +Signed-off-by: Philippe Coval +--- + src/client/client.pro | 5 + + src/client/qwaylanddisplay.cpp | 5 + + src/client/qwaylanddisplay_p.h | 4 + + src/client/qwaylandshellsurface.cpp | 134 ------------------------ + src/client/qwaylandshellsurface_p.h | 40 +++----- + src/client/qwaylandwindow.cpp | 40 ++++++-- + src/client/qwaylandwlshellsurface.cpp | 186 ++++++++++++++++++++++++++++++++++ + src/client/qwaylandwlshellsurface_p.h | 101 ++++++++++++++++++ + src/client/qwaylandxdgsurface.cpp | 173 +++++++++++++++++++++++++++++++ + src/client/qwaylandxdgsurface_p.h | 105 +++++++++++++++++++ + 10 files changed, 625 insertions(+), 168 deletions(-) + create mode 100644 src/client/qwaylandwlshellsurface.cpp + create mode 100644 src/client/qwaylandwlshellsurface_p.h + create mode 100644 src/client/qwaylandxdgsurface.cpp + create mode 100644 src/client/qwaylandxdgsurface_p.h + +diff --git a/src/client/client.pro b/src/client/client.pro +index 10cbd31..9ecf82f 100644 +--- a/src/client/client.pro ++++ b/src/client/client.pro +@@ -41,6 +41,7 @@ WAYLANDCLIENTSOURCES += \ + ../extensions/qtkey-extension.xml \ + ../extensions/windowmanager.xml \ + ../3rdparty/protocol/text.xml \ ++ ../3rdparty/protocol/xdg-shell.xml \ + + SOURCES += qwaylandintegration.cpp \ + qwaylandnativeinterface.cpp \ +@@ -57,6 +58,8 @@ SOURCES += qwaylandintegration.cpp \ + qwaylanddatadevicemanager.cpp \ + qwaylanddatasource.cpp \ + qwaylandshellsurface.cpp \ ++ qwaylandwlshellsurface.cpp \ ++ qwaylandxdgsurface.cpp \ + qwaylandextendedoutput.cpp \ + qwaylandextendedsurface.cpp \ + qwaylandsubsurface.cpp \ +@@ -85,6 +88,8 @@ HEADERS += qwaylandintegration_p.h \ + qwaylanddatadevicemanager_p.h \ + qwaylanddatasource_p.h \ + qwaylandshellsurface_p.h \ ++ qwaylandwlshellsurface_p.h \ ++ qwaylandxdgsurface_p.h \ + qwaylandextendedoutput_p.h \ + qwaylandextendedsurface_p.h \ + qwaylandsubsurface_p.h \ +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index 0b715c0..7f953ad 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -61,6 +61,7 @@ + #include "qwaylandqtkey_p.h" + + #include ++#include + + #include + #include +@@ -206,6 +207,10 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin + mCompositor.init(registry, id); + } else if (interface == QStringLiteral("wl_shm")) { + mShm = static_cast(wl_registry_bind(registry, id, &wl_shm_interface,1)); ++ } else if (interface == QStringLiteral("xdg_shell") ++ && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { ++ mShellXdg.reset(new QtWayland::xdg_shell(registry, id)); ++ mShellXdg->use_unstable_version(QtWayland::xdg_shell::version_current); + } else if (interface == QStringLiteral("wl_shell")){ + mShell.reset(new QtWayland::wl_shell(registry, id)); + } else if (interface == QStringLiteral("wl_seat")) { +diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h +index 40cb2b2..cf5dfc2 100644 +--- a/src/client/qwaylanddisplay_p.h ++++ b/src/client/qwaylanddisplay_p.h +@@ -51,6 +51,7 @@ + + #include + #include ++#include + + struct wl_cursor_image; + +@@ -78,6 +79,7 @@ namespace QtWayland { + class qt_sub_surface_extension; + class qt_surface_extension; + class wl_text_input_manager; ++ class xdg_shell; + } + + typedef void (*RegistryListener)(void *data, +@@ -113,6 +115,7 @@ public: + QtWayland::wl_compositor *compositor() { return &mCompositor; } + + QtWayland::wl_shell *shell() { return mShell.data(); } ++ QtWayland::xdg_shell *shellXdg() { return mShellXdg.data(); } + + QList inputDevices() const { return mInputDevices; } + QWaylandInputDevice *defaultInputDevice() const; +@@ -168,6 +171,7 @@ private: + QThread *mEventThread; + QWaylandEventThread *mEventThreadObject; + QScopedPointer mShell; ++ QScopedPointer mShellXdg; + QList mScreens; + QList mInputDevices; + QList mRegistryListeners; +diff --git a/src/client/qwaylandshellsurface.cpp b/src/client/qwaylandshellsurface.cpp +index b7a819f..80e509b 100644 +--- a/src/client/qwaylandshellsurface.cpp ++++ b/src/client/qwaylandshellsurface.cpp +@@ -40,137 +40,3 @@ + ****************************************************************************/ + + #include "qwaylandshellsurface_p.h" +- +-#include "qwaylanddisplay_p.h" +-#include "qwaylandwindow_p.h" +-#include "qwaylandinputdevice_p.h" +-#include "qwaylanddecoration_p.h" +-#include "qwaylandscreen_p.h" +- +-#include +- +-QT_BEGIN_NAMESPACE +- +-QWaylandShellSurface::QWaylandShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window) +- : QtWayland::wl_shell_surface(shell_surface) +- , m_window(window) +- , m_maximized(false) +- , m_fullscreen(false) +-{ +-} +- +-QWaylandShellSurface::~QWaylandShellSurface() +-{ +- wl_shell_surface_destroy(object()); +-} +- +-void QWaylandShellSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) +-{ +- resize(inputDevice->wl_seat(), +- inputDevice->serial(), +- edges); +-} +- +-void QWaylandShellSurface::move(QWaylandInputDevice *inputDevice) +-{ +- move(inputDevice->wl_seat(), +- inputDevice->serial()); +-} +- +-void QWaylandShellSurface::setMaximized() +-{ +- m_maximized = true; +- m_size = m_window->window()->geometry().size(); +- set_maximized(0); +-} +- +-void QWaylandShellSurface::setFullscreen() +-{ +- m_fullscreen = true; +- m_size = m_window->window()->geometry().size(); +- set_fullscreen(WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, 0); +-} +- +-void QWaylandShellSurface::setNormal() +-{ +- if (m_fullscreen || m_maximized) { +- m_fullscreen = m_maximized = false; +- setTopLevel(); +- QMargins m = m_window->frameMargins(); +- m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); +- } +-} +- +-void QWaylandShellSurface::setMinimized() +-{ +- // TODO: There's no wl_shell_surface API for this +-} +- +-void QWaylandShellSurface::setTopLevel() +-{ +- set_toplevel(); +-} +- +-void QWaylandShellSurface::updateTransientParent(QWindow *parent) +-{ +- QWaylandWindow *parent_wayland_window = static_cast(parent->handle()); +- if (!parent_wayland_window) +- return; +- +- // set_transient expects a position relative to the parent +- QPoint transientPos = m_window->geometry().topLeft(); // this is absolute +- QWindow *parentWin = m_window->window()->transientParent(); +- transientPos -= parentWin->geometry().topLeft(); +- if (parent_wayland_window->decoration()) { +- transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); +- transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); +- } +- +- uint32_t flags = 0; +- Qt::WindowFlags wf = m_window->window()->flags(); +- if (wf.testFlag(Qt::ToolTip) +- || wf.testFlag(Qt::WindowTransparentForInput)) +- flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE; +- +- set_transient(parent_wayland_window->object(), +- transientPos.x(), +- transientPos.y(), +- flags); +-} +- +-void QWaylandShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial) +-{ +- QWaylandWindow *parent_wayland_window = parent; +- if (!parent_wayland_window) +- return; +- +- // set_popup expects a position relative to the parent +- QPoint transientPos = m_window->geometry().topLeft(); // this is absolute +- transientPos -= parent_wayland_window->geometry().topLeft(); +- if (parent_wayland_window->decoration()) { +- transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); +- transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); +- } +- +- set_popup(device->wl_seat(), serial, parent_wayland_window->object(), +- transientPos.x(), transientPos.y(), 0); +-} +- +-void QWaylandShellSurface::shell_surface_ping(uint32_t serial) +-{ +- pong(serial); +-} +- +-void QWaylandShellSurface::shell_surface_configure(uint32_t edges, +- int32_t width, +- int32_t height) +-{ +- m_window->configure(edges, width, height); +-} +- +-void QWaylandShellSurface::shell_surface_popup_done() +-{ +- QCoreApplication::postEvent(m_window->window(), new QCloseEvent()); +-} +- +-QT_END_NAMESPACE +diff --git a/src/client/qwaylandshellsurface_p.h b/src/client/qwaylandshellsurface_p.h +index 2477c3f..2f59f60 100644 +--- a/src/client/qwaylandshellsurface_p.h ++++ b/src/client/qwaylandshellsurface_p.h +@@ -55,39 +55,25 @@ class QWaylandWindow; + class QWaylandInputDevice; + class QWindow; + +-class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface : public QtWayland::wl_shell_surface ++class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface + { + public: +- QWaylandShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window); +- ~QWaylandShellSurface(); ++ virtual ~QWaylandShellSurface() {} ++ virtual void resize(QWaylandInputDevice * /*inputDevice*/, enum wl_shell_surface_resize /*edges*/) ++ {} + +- using QtWayland::wl_shell_surface::resize; +- void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges); +- +- using QtWayland::wl_shell_surface::move; +- void move(QWaylandInputDevice *inputDevice); ++ virtual void move(QWaylandInputDevice * /*inputDevice*/) {} ++ virtual void setTitle(const QString & /*title*/) {} ++ virtual void setAppId(const QString & /*appId*/) {} + + private: +- void setMaximized(); +- void setFullscreen(); +- void setNormal(); +- void setMinimized(); +- +- void setTopLevel(); +- void updateTransientParent(QWindow *parent); +- void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial); +- +- QWaylandWindow *m_window; +- bool m_maximized; +- bool m_fullscreen; +- QSize m_size; +- +- void shell_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; +- void shell_surface_configure(uint32_t edges, +- int32_t width, +- int32_t height) Q_DECL_OVERRIDE; +- void shell_surface_popup_done() Q_DECL_OVERRIDE; ++ virtual void setMaximized() {} ++ virtual void setFullscreen() {} ++ virtual void setNormal() {} ++ virtual void setMinimized() {} + ++ virtual void setTopLevel() {} ++ virtual void updateTransientParent(QWindow * /*parent*/) {} + friend class QWaylandWindow; + }; + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 920c977..3fb3a49 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -46,6 +46,8 @@ + #include "qwaylandinputdevice_p.h" + #include "qwaylandscreen_p.h" + #include "qwaylandshellsurface_p.h" ++#include "qwaylandwlshellsurface_p.h" ++#include "qwaylandxdgsurface_p.h" + #include "qwaylandextendedsurface_p.h" + #include "qwaylandsubsurface_p.h" + #include "qwaylanddecoration_p.h" +@@ -92,8 +94,16 @@ QWaylandWindow::QWaylandWindow(QWindow *window) + static WId id = 1; + mWindowId = id++; + +- if (mDisplay->shell() && window->type() & Qt::Window && !(window->flags() & Qt::BypassWindowManagerHint)) +- mShellSurface = new QWaylandShellSurface(mDisplay->shell()->get_shell_surface(object()), this); ++ if (!(window->flags() & Qt::BypassWindowManagerHint)) { ++ if (mDisplay->shellXdg()) { ++ if (window->type() & Qt::Window) { ++ mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); ++ } ++ } else if (mDisplay->shell() && window->type() & Qt::Window) { ++ mShellSurface = new QWaylandWlShellSurface(mDisplay->shell()->get_shell_surface(object()), this); ++ } ++ } ++ + if (mDisplay->windowExtension()) + mExtendedWindow = new QWaylandExtendedSurface(this, mDisplay->windowExtension()->get_extended_surface(object())); + if (mDisplay->subSurfaceExtension()) +@@ -101,12 +111,12 @@ QWaylandWindow::QWaylandWindow(QWindow *window) + + if (mShellSurface) { + // Set initial surface title +- mShellSurface->set_title(window->title()); ++ mShellSurface->setTitle(window->title()); + + // Set surface class to the .desktop file name (obtained from executable name) + QFileInfo exeFileInfo(qApp->applicationFilePath()); + QString className = exeFileInfo.baseName() + QLatin1String(".desktop"); +- mShellSurface->set_class(className); ++ mShellSurface->setAppId(className); + } + + if (QPlatformWindow::parent() && mSubSurfaceWindow) { +@@ -170,7 +180,7 @@ void QWaylandWindow::setParent(const QPlatformWindow *parent) + void QWaylandWindow::setWindowTitle(const QString &title) + { + if (mShellSurface) { +- mShellSurface->set_title(title); ++ mShellSurface->setTitle(title); + } + + if (mWindowDecoration && window()->isVisible()) +@@ -212,8 +222,10 @@ void QWaylandWindow::setVisible(bool visible) + mMouseDevice = parent->mMouseDevice; + mMouseSerial = parent->mMouseSerial; + +- if (mMouseDevice) +- mShellSurface->setPopup(transientParent(), mMouseDevice, mMouseSerial); ++ QWaylandWlShellSurface *wlshellSurface = dynamic_cast(mShellSurface); ++ if (mMouseDevice && wlshellSurface) { ++ wlshellSurface->setPopup(transientParent(), mMouseDevice, mMouseSerial); ++ } + } + + if (!mSentInitialResize) { +@@ -428,6 +440,20 @@ void QWaylandWindow::setWindowFlags(Qt::WindowFlags flags) + + bool QWaylandWindow::createDecoration() + { ++ // so far only xdg-shell support this "unminimize" trick, may be moved elsewhere ++ if (mState == Qt::WindowMinimized) { ++ QWaylandXdgSurface *xdgSurface = dynamic_cast(mShellSurface); ++ if ( xdgSurface ) { ++ if (xdgSurface->isFullscreen()) { ++ setWindowStateInternal(Qt::WindowFullScreen); ++ } else if (xdgSurface->isMaximized()) { ++ setWindowStateInternal(Qt::WindowMaximized); ++ } else { ++ setWindowStateInternal(Qt::WindowNoState); ++ } ++ } ++ } ++ + static bool disableWaylandDecorations = !qgetenv("QT_WAYLAND_DISABLE_WINDOWDECORATION").isEmpty(); + if (disableWaylandDecorations) + return false; +diff --git a/src/client/qwaylandwlshellsurface.cpp b/src/client/qwaylandwlshellsurface.cpp +new file mode 100644 +index 0000000..4b73ec2 +--- /dev/null ++++ b/src/client/qwaylandwlshellsurface.cpp +@@ -0,0 +1,186 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "qwaylandwlshellsurface_p.h" ++ ++#include "qwaylanddisplay_p.h" ++#include "qwaylandwindow_p.h" ++#include "qwaylandinputdevice_p.h" ++#include "qwaylanddecoration_p.h" ++#include "qwaylandscreen_p.h" ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++QWaylandWlShellSurface::QWaylandWlShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window) ++ : QtWayland::wl_shell_surface(shell_surface) ++ , m_window(window) ++ , m_maximized(false) ++ , m_fullscreen(false) ++{ ++} ++ ++QWaylandWlShellSurface::~QWaylandWlShellSurface() ++{ ++ wl_shell_surface_destroy(object()); ++} ++ ++void QWaylandWlShellSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) ++{ ++ resize(inputDevice->wl_seat(), ++ inputDevice->serial(), ++ edges); ++} ++ ++void QWaylandWlShellSurface::move(QWaylandInputDevice *inputDevice) ++{ ++ move(inputDevice->wl_seat(), ++ inputDevice->serial()); ++} ++ ++void QWaylandWlShellSurface::setTitle(const QString & title) ++{ ++ return QtWayland::wl_shell_surface::set_title(title); ++} ++ ++void QWaylandWlShellSurface::setAppId(const QString & appId) ++{ ++ return QtWayland::wl_shell_surface::set_class(appId); ++} ++ ++void QWaylandWlShellSurface::setMaximized() ++{ ++ m_maximized = true; ++ m_size = m_window->window()->geometry().size(); ++ set_maximized(0); ++} ++ ++void QWaylandWlShellSurface::setFullscreen() ++{ ++ m_fullscreen = true; ++ m_size = m_window->window()->geometry().size(); ++ set_fullscreen(WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, 0); ++} ++ ++void QWaylandWlShellSurface::setNormal() ++{ ++ if (m_fullscreen || m_maximized) { ++ m_fullscreen = m_maximized = false; ++ setTopLevel(); ++ QMargins m = m_window->frameMargins(); ++ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); ++ } ++} ++ ++void QWaylandWlShellSurface::setMinimized() ++{ ++ // TODO: There's no wl_shell_surface API for this ++} ++ ++void QWaylandWlShellSurface::setTopLevel() ++{ ++ set_toplevel(); ++} ++ ++void QWaylandWlShellSurface::updateTransientParent(QWindow *parent) ++{ ++ QWaylandWindow *parent_wayland_window = static_cast(parent->handle()); ++ if (!parent_wayland_window) ++ return; ++ ++ // set_transient expects a position relative to the parent ++ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute ++ QWindow *parentWin = m_window->window()->transientParent(); ++ transientPos -= parentWin->geometry().topLeft(); ++ if (parent_wayland_window->decoration()) { ++ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); ++ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); ++ } ++ ++ uint32_t flags = 0; ++ Qt::WindowFlags wf = m_window->window()->flags(); ++ if (wf.testFlag(Qt::ToolTip) ++ || wf.testFlag(Qt::WindowTransparentForInput)) ++ flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE; ++ ++ set_transient(parent_wayland_window->object(), ++ transientPos.x(), ++ transientPos.y(), ++ flags); ++} ++ ++void QWaylandWlShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial) ++{ ++ QWaylandWindow *parent_wayland_window = parent; ++ if (!parent_wayland_window) ++ return; ++ ++ // set_popup expects a position relative to the parent ++ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute ++ transientPos -= parent_wayland_window->geometry().topLeft(); ++ if (parent_wayland_window->decoration()) { ++ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); ++ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); ++ } ++ ++ set_popup(device->wl_seat(), serial, parent_wayland_window->object(), ++ transientPos.x(), transientPos.y(), 0); ++} ++ ++void QWaylandWlShellSurface::shell_surface_ping(uint32_t serial) ++{ ++ pong(serial); ++} ++ ++void QWaylandWlShellSurface::shell_surface_configure(uint32_t edges, ++ int32_t width, ++ int32_t height) ++{ ++ m_window->configure(edges, width, height); ++} ++ ++void QWaylandWlShellSurface::shell_surface_popup_done() ++{ ++ QCoreApplication::postEvent(m_window->window(), new QCloseEvent()); ++} ++ ++QT_END_NAMESPACE +diff --git a/src/client/qwaylandwlshellsurface_p.h b/src/client/qwaylandwlshellsurface_p.h +new file mode 100644 +index 0000000..d02bb7b +--- /dev/null ++++ b/src/client/qwaylandwlshellsurface_p.h +@@ -0,0 +1,101 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QWAYLANDWLSHELLSURFACE_H ++#define QWAYLANDWLSHELLSURFACE_H ++ ++#include ++ ++#include ++ ++#include ++#include ++#include "qwaylandshellsurface_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++class QWaylandWindow; ++class QWaylandInputDevice; ++class QWindow; ++ ++class Q_WAYLAND_CLIENT_EXPORT QWaylandWlShellSurface : public QtWayland::wl_shell_surface ++ , public QWaylandShellSurface ++{ ++public: ++ QWaylandWlShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window); ++ virtual ~QWaylandWlShellSurface(); ++ ++ using QtWayland::wl_shell_surface::resize; ++ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; ++ ++ using QtWayland::wl_shell_surface::move; ++ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; ++ ++ void setTitle(const QString & title) Q_DECL_OVERRIDE; ++ void setAppId(const QString &appId) Q_DECL_OVERRIDE; ++ ++private: ++ void setMaximized() Q_DECL_OVERRIDE; ++ void setFullscreen() Q_DECL_OVERRIDE; ++ void setNormal() Q_DECL_OVERRIDE; ++ void setMinimized() Q_DECL_OVERRIDE; ++ ++ void setTopLevel() Q_DECL_OVERRIDE; ++ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; ++ void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial); ++ ++ QWaylandWindow *m_window; ++ bool m_maximized; ++ bool m_fullscreen; ++ QSize m_size; ++ ++ void shell_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; ++ void shell_surface_configure(uint32_t edges, ++ int32_t width, ++ int32_t height) Q_DECL_OVERRIDE; ++ void shell_surface_popup_done() Q_DECL_OVERRIDE; ++ ++ friend class QWaylandWindow; ++}; ++ ++QT_END_NAMESPACE ++ ++#endif // QWAYLANDSHELLSURFACE_H +diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp +new file mode 100644 +index 0000000..1b8affa +--- /dev/null ++++ b/src/client/qwaylandxdgsurface.cpp +@@ -0,0 +1,173 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "qwaylandxdgsurface_p.h" ++ ++#include "qwaylanddisplay_p.h" ++#include "qwaylandwindow_p.h" ++#include "qwaylandinputdevice_p.h" ++#include "qwaylanddecoration_p.h" ++#include "qwaylandscreen_p.h" ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++QWaylandXdgSurface::QWaylandXdgSurface(struct ::xdg_surface *xdg_surface, QWaylandWindow *window) ++ : QtWayland::xdg_surface(xdg_surface) ++ , m_window(window) ++ , m_maximized(false) ++ , m_minimized(false) ++ , m_fullscreen(false) ++{ ++} ++ ++QWaylandXdgSurface::~QWaylandXdgSurface() ++{ ++ xdg_surface_destroy(object()); ++} ++ ++void QWaylandXdgSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) ++{ ++ // May need some conversion if types get incompatibles, ATM they're identical ++ enum resize_edge const * const arg = reinterpret_cast(&edges); ++ resize(inputDevice, *arg); ++} ++ ++void QWaylandXdgSurface::resize(QWaylandInputDevice *inputDevice, enum resize_edge edges) ++{ ++ resize(inputDevice->wl_seat(), ++ inputDevice->serial(), ++ edges); ++} ++ ++void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice) ++{ ++ move(inputDevice->wl_seat(), ++ inputDevice->serial()); ++} ++ ++void QWaylandXdgSurface::setMaximized() ++{ ++ m_maximized = true; ++ m_size = m_window->window()->geometry().size(); ++ set_maximized(); ++} ++ ++void QWaylandXdgSurface::setFullscreen() ++{ ++ m_fullscreen = true; ++ m_size = m_window->window()->geometry().size(); ++ set_fullscreen(); ++} ++ ++void QWaylandXdgSurface::setNormal() ++{ ++ if (m_fullscreen || m_maximized || m_minimized) { ++ if (m_maximized) { unset_maximized(); } ++ if (m_fullscreen) { unset_fullscreen(); } ++ ++ m_fullscreen = m_maximized = m_minimized = false; ++ setTopLevel(); ++ QMargins m = m_window->frameMargins(); ++ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); ++ } ++} ++ ++void QWaylandXdgSurface::setMinimized() ++{ ++ m_minimized = true; ++ m_size = m_window->window()->geometry().size(); ++ set_minimized(); ++} ++ ++void QWaylandXdgSurface::setTopLevel() ++{ ++ // There's no xdg_shell_surface API for this, ignoring ++} ++ ++void QWaylandXdgSurface::updateTransientParent(QWindow *parent) ++{ ++ QWaylandWindow *parent_wayland_window = static_cast(parent->handle()); ++ if (!parent_wayland_window) ++ return; ++ ++ // set_transient expects a position relative to the parent ++ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute ++ QWindow *parentWin = m_window->window()->transientParent(); ++ transientPos -= parentWin->geometry().topLeft(); ++ if (parent_wayland_window->decoration()) { ++ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); ++ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); ++ } ++ ++ uint32_t flags = 0; ++ Qt::WindowFlags wf = m_window->window()->flags(); ++ if (wf.testFlag(Qt::ToolTip) ++ || wf.testFlag(Qt::WindowTransparentForInput)) ++ flags |= XDG_SURFACE_SET_TRANSIENT_FOR; ++ ++ set_transient_for(parent_wayland_window->object()); ++} ++ ++void QWaylandXdgSurface::setTitle(const QString & title) ++{ ++ return QtWayland::xdg_surface::set_title(title); ++} ++ ++void QWaylandXdgSurface::setAppId(const QString & appId) ++{ ++ return QtWayland::xdg_surface::set_app_id(appId); ++} ++ ++void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial) ++{ ++ pong(serial); ++} ++ ++void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width, ++ int32_t height) ++{ ++ m_window->configure(edges, width, height); ++} ++ ++ ++QT_END_NAMESPACE +diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h +new file mode 100644 +index 0000000..744d3f3 +--- /dev/null ++++ b/src/client/qwaylandxdgsurface_p.h +@@ -0,0 +1,105 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QWAYLANDXDGSURFACE_H ++#define QWAYLANDXDGSURFACE_H ++ ++#include ++ ++#include ++ ++#include ++#include ++#include "qwaylandshellsurface_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++class QWaylandWindow; ++class QWaylandInputDevice; ++class QWindow; ++ ++class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgSurface : public QtWayland::xdg_surface ++ , public QWaylandShellSurface ++{ ++public: ++ QWaylandXdgSurface(struct ::xdg_surface *shell_surface, QWaylandWindow *window); ++ virtual ~QWaylandXdgSurface(); ++ ++ using QtWayland::xdg_surface::resize; ++ void resize(QWaylandInputDevice *inputDevice, enum resize_edge edges); ++ ++ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; ++ ++ using QtWayland::xdg_surface::move; ++ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; ++ ++ void setTitle(const QString &title) Q_DECL_OVERRIDE; ++ void setAppId(const QString &appId) Q_DECL_OVERRIDE; ++ ++ bool isFullscreen() const { return m_fullscreen; } ++ bool isMaximized() const { return m_maximized; } ++ ++private: ++ void setMaximized() Q_DECL_OVERRIDE; ++ void setFullscreen() Q_DECL_OVERRIDE; ++ void setNormal() Q_DECL_OVERRIDE; ++ void setMinimized() Q_DECL_OVERRIDE; ++ ++ void setTopLevel() Q_DECL_OVERRIDE; ++ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; ++ ++private: ++ QWaylandWindow *m_window; ++ bool m_maximized; ++ bool m_minimized; ++ bool m_fullscreen; ++ QSize m_size; ++ ++ void xdg_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; ++ void xdg_surface_configure(uint32_t edges, ++ int32_t width, ++ int32_t height) Q_DECL_OVERRIDE; ++ friend class QWaylandWindow; ++}; ++ ++QT_END_NAMESPACE ++ ++#endif // QWAYLANDXDGSURFACE_H +-- +1.9.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch new file mode 100644 index 000000000..8f0425a76 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch @@ -0,0 +1,772 @@ +From c4219cca0febd7119e0bec776fdc2877b3448e0b Mon Sep 17 00:00:00 2001 +From: Philippe Coval +Date: Tue, 10 Jun 2014 16:22:17 +0200 +Subject: [PATCH 19/21] xdg-shell: upgrade to support current version + (weston-1.5.0) + +The protocol file is a raw copy of + +Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.5.0 + +Task-number: QTBUG-38633/related +Reviewed-by: Giulio Camuffo +Reviewed-by: Philippe Coval +Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/4bac130b97fbaa565aa9883eb302557ef0185d50 +Change-Id: I41ca2f89c09a8b6348ce2fbf6d59f44b4c81ffff +--- + src/3rdparty/protocol/xdg-shell.xml | 288 ++++++++++++++++++------------------ + src/client/client.pro | 2 + + src/client/qwaylanddisplay.cpp | 10 +- + src/client/qwaylanddisplay_p.h | 5 +- + src/client/qwaylandxdgshell.cpp | 77 ++++++++++ + src/client/qwaylandxdgshell_p.h | 73 +++++++++ + src/client/qwaylandxdgsurface.cpp | 60 ++++++-- + src/client/qwaylandxdgsurface_p.h | 11 +- + 8 files changed, 364 insertions(+), 162 deletions(-) + create mode 100644 src/client/qwaylandxdgshell.cpp + create mode 100644 src/client/qwaylandxdgshell_p.h + +diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml +index 4e5cff8..79a2831 100644 +--- a/src/3rdparty/protocol/xdg-shell.xml ++++ b/src/3rdparty/protocol/xdg-shell.xml +@@ -40,19 +40,22 @@ + + + +- Use this enum to check the protocol version, and it will be updated +- automatically. ++ The 'current' member of this enum gives the version of the ++ protocol. Implementations can compare this to the version ++ they implement using static_assert to ensure the protocol and ++ implementation versions match. + +- ++ + + + + + +- Use this request in order to enable use of this interface. +- +- Understand and agree that one is using an unstable interface, +- that will likely change in the future, breaking the API. ++ Negotiate the unstable version of the interface. This ++ mechanism is in place to ensure client and server agree on the ++ unstable versions of the protocol that they speak or exit ++ cleanly if they don't agree. This request will go away once ++ the xdg-shell protocol is stable. + + + +@@ -84,6 +87,28 @@ + + + ++ ++ ++ ++ The ping event asks the client if it's still alive. Pass the ++ serial specified in the event back to the compositor by sending ++ a "pong" request back with the specified serial. ++ ++ Compositors can use this to determine if the client is still ++ alive. It's unspecified what will happen if the client doesn't ++ respond to the ping request, or in what timeframe. Clients should ++ try to respond in a reasonable amount of time. ++ ++ ++ ++ ++ ++ ++ A client must respond to a ping event with a pong request or ++ the client may be deemed unresponsive. ++ ++ ++ + + + +@@ -124,6 +149,32 @@ + + + ++ ++ ++ This tells the compositor what the visible size of the window ++ should be, so it can use it to determine what borders to use for ++ constrainment and alignment. ++ ++ CSD often has invisible areas for decoration purposes, like drop ++ shadows. These "shadow" drawings need to be subtracted out of the ++ normal boundaries of the window when computing where to place ++ windows (e.g. to set this window so it's centered on top of another, ++ or to put it to the left or right of the screen.) ++ ++ This value should change as little as possible at runtime, to ++ prevent flicker. ++ ++ This value is also ignored when the window is maximized or ++ fullscreen, and assumed to be 0. ++ ++ If never called, this value is assumed to be 0. ++ ++ ++ ++ ++ ++ ++ + + + Set a short title for the surface. +@@ -150,22 +201,6 @@ + + + +- +- +- A client must respond to a ping event with a pong request or +- the client may be deemed unresponsive. +- +- +- +- +- +- +- Ping a client to check if it is receiving events and sending +- requests. A client is expected to reply with a pong request. +- +- +- +- + + + Start a pointer-driven move of the surface. +@@ -217,12 +252,6 @@ + ignore it if it doesn't resize, pick a smaller size (to + satisfy aspect ratio or resize in steps of NxM pixels). + +- The edges parameter provides a hint about how the surface +- was resized. The client may use this information to decide +- how to adjust its content to the new size (e.g. a scrolling +- area might adjust its content position to leave the viewable +- content unmoved). Valid edge values are from resize_edge enum. +- + The client is free to dismiss all but the last configure + event it received. + +@@ -230,7 +259,6 @@ + in surface local coordinates. + + +- + + + +@@ -250,128 +278,122 @@ + + + +- +- +- Event sent from the compositor to the client requesting that the client +- goes to a fullscreen state. It's the client job to call set_fullscreen +- and really trigger the fullscreen state. +- +- +- +- +- +- Event sent from the compositor to the client requesting that the client +- leaves the fullscreen state. It's the client job to call +- unset_fullscreen and really leave the fullscreen state. +- +- ++ ++ ++ The different state values used on the surface. This is designed for ++ state values like maximized, fullscreen. It is paired with the ++ request_change_state event to ensure that both the client and the ++ compositor setting the state can be synchronized. + +- +- +- Set the surface as fullscreen. ++ States set in this way are double-buffered. They will get applied on ++ the next commit. + +- After this request, the compositor should send a configure event +- informing the output size. ++ Desktop environments may extend this enum by taking up a range of ++ values and documenting the range they chose in this description. ++ They are not required to document the values for the range that they ++ chose. Ideally, any good extensions from a desktop environment should ++ make its way into standardization into this enum. + +- This request informs the compositor that the next attached buffer +- committed will be in a fullscreen state. The buffer size should be the +- same size as the size informed in the configure event, if the client +- doesn't want to leave any empty area. ++ The current reserved ranges are: + +- In other words: the next attached buffer after set_maximized is the new +- maximized buffer. And the surface will be positioned at the maximized +- position on commit. +- +- A simple way to synchronize and wait for the correct configure event is +- to use a wl_display.sync request right after the set_fullscreen +- request. When the sync callback returns, the last configure event +- received just before it will be the correct one, and should contain the +- right size for the surface to maximize. +- +- Setting one state won't unset another state. Use +- xdg_surface.unset_fullscreen for unsetting it. ++ 0x0000 - 0x0FFF: xdg-shell core values, documented below. ++ 0x1000 - 0x1FFF: GNOME + +- ++ ++ A non-zero value indicates the surface is maximized. Otherwise, ++ the surface is unmaximized. ++ ++ ++ A non-zero value indicates the surface is fullscreen. Otherwise, ++ the surface is not fullscreen. ++ ++ + +- +- +- Unset the surface fullscreen state. ++ ++ ++ This asks the compositor to change the state. If the compositor wants ++ to change the state, it will send a change_state event with the same ++ state_type, value, and serial, and the event flow continues as if it ++ it was initiated by the compositor. + +- Same negotiation as set_fullscreen must be used. ++ If the compositor does not want to change the state, it will send a ++ change_state to the client with the old value of the state. + ++ ++ ++ ++ This serial is so the client can know which change_state event corresponds ++ to which request_change_state request it sent out. ++ + + +- +- +- Event sent from the compositor to the client requesting that the client +- goes to a maximized state. It's the client job to call set_maximized +- and really trigger the maximized state. ++ ++ ++ This event tells the client to change a surface's state. The client ++ should respond with an ack_change_state request to the compositor to ++ guarantee that the compositor knows that the client has seen it. + +- + +- +- +- Event sent from the compositor to the client requesting that the client +- leaves the maximized state. It's the client job to call unset_maximized +- and really leave the maximized state. +- ++ ++ ++ + + +- +- +- Set the surface as maximized. +- +- After this request, the compositor will send a configure event +- informing the output size minus panel and other MW decorations. +- +- This request informs the compositor that the next attached buffer +- committed will be in a maximized state. The buffer size should be the +- same size as the size informed in the configure event, if the client +- doesn't want to leave any empty area. ++ ++ ++ When a change_state event is received, a client should then ack it ++ using the ack_change_state request to ensure that the compositor ++ knows the client has seen the event. + +- In other words: the next attached buffer after set_maximized is the new +- maximized buffer. And the surface will be positioned at the maximized +- position on commit. ++ By this point, the state is confirmed, and the next attach should ++ contain the buffer drawn for the new state value. + +- A simple way to synchronize and wait for the correct configure event is +- to use a wl_display.sync request right after the set_maximized request. +- When the sync callback returns, the last configure event received just +- before it will be the correct one, and should contain the right size +- for the surface to maximize. +- +- Setting one state won't unset another state. Use +- xdg_surface.unset_maximized for unsetting it. ++ The values here need to be the same as the values in the cooresponding ++ change_state event. + ++ ++ ++ + + +- +- +- Unset the surface maximized state. +- +- Same negotiation as set_maximized must be used. ++ ++ ++ Minimize the surface. + + + +- +- +- Set the surface minimized state. +- +- Setting one state won't unset another state. ++ ++ ++ The activated_set event is sent when this surface has been ++ activated, which means that the surface has user attention. ++ Window decorations should be updated accordingly. You should ++ not use this event for anything but the style of decorations ++ you display, use wl_keyboard.enter and wl_keyboard.leave for ++ determining keyboard focus. + +- ++ + +- +- +- The focused_set event is sent when this surface has been +- activated. Window decorations should be updated accordingly. ++ ++ ++ The deactivate event is sent when this surface has been ++ deactivated, which means that the surface lost user attention. ++ Window decorations should be updated accordingly. You should ++ not use this event for anything but the style of decorations ++ you display, use wl_keyboard.enter and wl_keyboard.leave for ++ determining keyboard focus. + + + +- +- +- The focused_unset event is sent when this surface has been +- deactivated, because another surface has been activated. Window +- decorations should be updated accordingly. ++ ++ ++ The close event is sent by the compositor when the user ++ wants the surface to be closed. This should be equivalent to ++ the user clicking the close button in client-side decorations, ++ if your application has any... ++ ++ This is only a request that the user intends to close your ++ window. The client may choose to ignore this request, or show ++ a dialog to ask the user to save their data... + + + +@@ -409,22 +431,6 @@ + + + +- +- +- A client must respond to a ping event with a pong request or +- the client may be deemed unresponsive. +- +- +- +- +- +- +- Ping a client to check if it is receiving events and sending +- requests. A client is expected to reply with a pong request. +- +- +- +- + + + The popup_done event is sent out when a popup grab is broken, +diff --git a/src/client/client.pro b/src/client/client.pro +index 9ecf82f..73e3b7f 100644 +--- a/src/client/client.pro ++++ b/src/client/client.pro +@@ -59,6 +59,7 @@ SOURCES += qwaylandintegration.cpp \ + qwaylanddatasource.cpp \ + qwaylandshellsurface.cpp \ + qwaylandwlshellsurface.cpp \ ++ qwaylandxdgshell.cpp \ + qwaylandxdgsurface.cpp \ + qwaylandextendedoutput.cpp \ + qwaylandextendedsurface.cpp \ +@@ -89,6 +90,7 @@ HEADERS += qwaylandintegration_p.h \ + qwaylanddatasource_p.h \ + qwaylandshellsurface_p.h \ + qwaylandwlshellsurface_p.h \ ++ qwaylandxdgshell_p.h \ + qwaylandxdgsurface_p.h \ + qwaylandextendedoutput_p.h \ + qwaylandextendedsurface_p.h \ +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index 7f953ad..2e25672 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -50,7 +50,7 @@ + #include "qwaylandclipboard_p.h" + #include "qwaylanddatadevicemanager_p.h" + #include "qwaylandhardwareintegration_p.h" +- ++#include "qwaylandxdgshell_p.h" + + #include "qwaylandwindowmanagerintegration_p.h" + +@@ -209,8 +209,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin + mShm = static_cast(wl_registry_bind(registry, id, &wl_shm_interface,1)); + } else if (interface == QStringLiteral("xdg_shell") + && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { +- mShellXdg.reset(new QtWayland::xdg_shell(registry, id)); +- mShellXdg->use_unstable_version(QtWayland::xdg_shell::version_current); ++ mShellXdg.reset(new QWaylandXdgShell(registry,id)); + } else if (interface == QStringLiteral("wl_shell")){ + mShell.reset(new QtWayland::wl_shell(registry, id)); + } else if (interface == QStringLiteral("wl_seat")) { +@@ -275,4 +274,9 @@ void QWaylandDisplay::forceRoundTrip() + wl_display_roundtrip(mDisplay); + } + ++QtWayland::xdg_shell *QWaylandDisplay::shellXdg() ++{ ++ return mShellXdg.data(); ++} ++ + QT_END_NAMESPACE +diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h +index cf5dfc2..f1b35a7 100644 +--- a/src/client/qwaylanddisplay_p.h ++++ b/src/client/qwaylanddisplay_p.h +@@ -72,6 +72,7 @@ class QWaylandWindow; + class QWaylandEventThread; + class QWaylandIntegration; + class QWaylandHardwareIntegration; ++class QWaylandXdgShell; + + namespace QtWayland { + class qt_output_extension; +@@ -115,7 +116,7 @@ public: + QtWayland::wl_compositor *compositor() { return &mCompositor; } + + QtWayland::wl_shell *shell() { return mShell.data(); } +- QtWayland::xdg_shell *shellXdg() { return mShellXdg.data(); } ++ QtWayland::xdg_shell *shellXdg(); + + QList inputDevices() const { return mInputDevices; } + QWaylandInputDevice *defaultInputDevice() const; +@@ -171,7 +172,7 @@ private: + QThread *mEventThread; + QWaylandEventThread *mEventThreadObject; + QScopedPointer mShell; +- QScopedPointer mShellXdg; ++ QScopedPointer mShellXdg; + QList mScreens; + QList mInputDevices; + QList mRegistryListeners; +diff --git a/src/client/qwaylandxdgshell.cpp b/src/client/qwaylandxdgshell.cpp +new file mode 100644 +index 0000000..eb9f91c +--- /dev/null ++++ b/src/client/qwaylandxdgshell.cpp +@@ -0,0 +1,77 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2014 Eurogiciel, author: ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "qwaylandxdgshell_p.h" ++ ++#include "qwaylanddisplay_p.h" ++#include "qwaylandwindow_p.h" ++#include "qwaylandinputdevice_p.h" ++#include "qwaylanddecoration_p.h" ++#include "qwaylandscreen_p.h" ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++QWaylandXdgShell::QWaylandXdgShell(struct ::xdg_shell *shell) ++ : QtWayland::xdg_shell(shell) ++{ ++} ++ ++QWaylandXdgShell::QWaylandXdgShell(struct ::wl_registry *registry, uint32_t id) ++ : QtWayland::xdg_shell(registry, id) ++{ ++ use_unstable_version(QtWayland::xdg_shell::version_current); ++} ++ ++QWaylandXdgShell::~QWaylandXdgShell() ++{ ++ xdg_shell_destroy(object()); ++} ++ ++ ++void QWaylandXdgShell::xdg_shell_ping(uint32_t serial) ++{ ++ pong(serial); ++} ++ ++ ++QT_END_NAMESPACE +diff --git a/src/client/qwaylandxdgshell_p.h b/src/client/qwaylandxdgshell_p.h +new file mode 100644 +index 0000000..6a396bd +--- /dev/null ++++ b/src/client/qwaylandxdgshell_p.h +@@ -0,0 +1,73 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2014 Eurogiciel, author: ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QWAYLANDXDGSHELL_H ++#define QWAYLANDXDGSHELL_H ++ ++#include ++ ++#include ++ ++#include ++#include ++#include "qwaylandshellsurface_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++class QWaylandWindow; ++class QWaylandInputDevice; ++class QWindow; ++ ++class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShell : public QtWayland::xdg_shell ++{ ++public: ++ QWaylandXdgShell(struct ::xdg_shell *shell); ++ QWaylandXdgShell(struct ::wl_registry *registry, uint32_t id); ++ ++ virtual ~QWaylandXdgShell(); ++ ++private: ++ void xdg_shell_ping(uint32_t serial) Q_DECL_OVERRIDE; ++}; ++ ++QT_END_NAMESPACE ++ ++#endif // QWAYLANDXDGSHELL_H +diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp +index 1b8affa..5fb74d2 100644 +--- a/src/client/qwaylandxdgsurface.cpp ++++ b/src/client/qwaylandxdgsurface.cpp +@@ -87,23 +87,25 @@ void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice) + + void QWaylandXdgSurface::setMaximized() + { +- m_maximized = true; +- m_size = m_window->window()->geometry().size(); +- set_maximized(); ++ if (!m_maximized) ++ request_change_state(XDG_SURFACE_STATE_MAXIMIZED, true, 0); + } + + void QWaylandXdgSurface::setFullscreen() + { +- m_fullscreen = true; +- m_size = m_window->window()->geometry().size(); +- set_fullscreen(); ++ if (!m_fullscreen) ++ request_change_state(XDG_SURFACE_STATE_FULLSCREEN, true, 0); + } + + void QWaylandXdgSurface::setNormal() + { + if (m_fullscreen || m_maximized || m_minimized) { +- if (m_maximized) { unset_maximized(); } +- if (m_fullscreen) { unset_fullscreen(); } ++ if (m_maximized) { ++ request_change_state(XDG_SURFACE_STATE_MAXIMIZED, false, 0); ++ } ++ if (m_fullscreen) { ++ request_change_state(XDG_SURFACE_STATE_FULLSCREEN, false, 0); ++ } + + m_fullscreen = m_maximized = m_minimized = false; + setTopLevel(); +@@ -158,16 +160,48 @@ void QWaylandXdgSurface::setAppId(const QString & appId) + return QtWayland::xdg_surface::set_app_id(appId); + } + +-void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial) ++void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height) + { +- pong(serial); ++ m_window->configure(0 , width, height); + } + +-void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width, +- int32_t height) ++void QWaylandXdgSurface::xdg_surface_change_state(uint32_t state, ++ uint32_t value, ++ uint32_t serial) + { +- m_window->configure(edges, width, height); ++ ++ if (state == XDG_SURFACE_STATE_MAXIMIZED ++ || state == XDG_SURFACE_STATE_FULLSCREEN) { ++ if (value) { ++ m_size = m_window->window()->geometry().size(); ++ } else { ++ QMargins m = m_window->frameMargins(); ++ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); ++ } ++ } ++ ++ switch (state) { ++ case XDG_SURFACE_STATE_MAXIMIZED: ++ m_maximized = value; ++ break; ++ case XDG_SURFACE_STATE_FULLSCREEN: ++ m_fullscreen = value; ++ break; ++ } ++ ++ xdg_surface_ack_change_state(object(), state, value, serial); + } + ++void QWaylandXdgSurface::xdg_surface_activated() ++{ ++} ++ ++void QWaylandXdgSurface::xdg_surface_deactivated() ++{ ++} ++ ++void QWaylandXdgSurface::xdg_surface_close() ++{ ++} + + QT_END_NAMESPACE +diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h +index 744d3f3..d2a154e 100644 +--- a/src/client/qwaylandxdgsurface_p.h ++++ b/src/client/qwaylandxdgsurface_p.h +@@ -93,10 +93,15 @@ private: + bool m_fullscreen; + QSize m_size; + +- void xdg_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; +- void xdg_surface_configure(uint32_t edges, +- int32_t width, ++ void xdg_surface_configure(int32_t width, + int32_t height) Q_DECL_OVERRIDE; ++ void xdg_surface_change_state(uint32_t state, ++ uint32_t value, ++ uint32_t serial) Q_DECL_OVERRIDE; ++ void xdg_surface_activated() Q_DECL_OVERRIDE; ++ void xdg_surface_deactivated() Q_DECL_OVERRIDE; ++ void xdg_surface_close() Q_DECL_OVERRIDE; ++ + friend class QWaylandWindow; + }; + +-- +1.9.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch new file mode 100644 index 000000000..413459fb6 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch @@ -0,0 +1,128 @@ +From b4f032b13338ad6c21024177b031c75063ef7493 Mon Sep 17 00:00:00 2001 +From: Manuel Bachmann +Date: Sun, 7 Sep 2014 08:19:30 +0200 +Subject: [PATCH 20/21] Add IVI-Shell protocol file version patch v6 + +Source : http://lists.freedesktop.org/archives/wayland-devel/2014-June/015617.html + +This file comes from the last proposed definition of the IVI-Shell protocol, +and will need to be refreshed on protocol update. + +Task-number: QTBUG-XXXXX/part/1of2 + +Signed-off-by: Manuel Bachmann +--- + src/3rdparty/protocol/ivi-application.xml | 101 ++++++++++++++++++++++++++++++ + 1 file changed, 101 insertions(+) + create mode 100644 src/3rdparty/protocol/ivi-application.xml + +diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml +new file mode 100644 +index 0000000..833fd38 +--- /dev/null ++++ b/src/3rdparty/protocol/ivi-application.xml +@@ -0,0 +1,101 @@ ++ ++ ++ ++ ++ Copyright (C) 2013 DENSO CORPORATION ++ Copyright (c) 2013 BMW Car IT GmbH ++ ++ Permission is hereby granted, free of charge, to any person obtaining a copy ++ of this software and associated documentation files (the "Software"), to deal ++ in the Software without restriction, including without limitation the rights ++ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++ copies of the Software, and to permit persons to whom the Software is ++ furnished to do so, subject to the following conditions: ++ ++ The above copyright notice and this permission notice shall be included in ++ all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ++ THE SOFTWARE. ++ ++ ++ ++ ++ ++ ++ ++ This removes link from ivi_id to wl_surface and destroys ivi_surface. ++ ++ ++ ++ ++ ++ The new visibility state is provided in argument visibility. ++ If visibility is 0, the surface has become invisible. ++ If visibility is not 0, the surface has become visible. ++ ++ ++ ++ ++ ++ ++ These define all possible warning codes returned by ivi compositor on server-side warnings. ++ invalid_wl_surface: ++ - wl_surface already has a another role. ++ - wl_surface is destroyed before the ivi_surface is destroyed. ++ ivi_id_in_use: ivi_id is already assigned by another application. ++ ++ ++ ++ ++ ++ ++ ++ The ivi compositor encountered warning while processing a request by this ++ application. The warning is defined by argument warning_code and optional ++ warning_text. If the warning is detected, client shall destroy the ivi_surface ++ object. ++ ++ When a warning event is sent, the compositor turns the ivi_surface object inert. ++ The ivi_surface will not deliver further events, all requests on it are ignored ++ except 'destroy', and the association to the ivi_id is removed. The client ++ should destroy the ivi_surface object. If an inert ivi_surface object is used as ++ an argument to any other object's request, that request will [produce a fatal ++ error / produce a warning / be ignored]. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ This interface is implemented by servers that provide desktop-style user interfaces. ++ It allows clients to associate a ivi_surface with a basic surface. ++ ++ ++ ++ ++ surface_create will create a interface:ivi_surface with numeric ID; ivi_id in ++ ivi compositor. These ivi_ids are defined as unique in the system to identify ++ it inside of ivi compositor. The ivi compositor implements business logic how to ++ set properties of the surface with ivi_id according to status of the system. ++ E.g. a unique ID for Car Navigation application is used for implementing special ++ logic of the application about where it shall be located. ++ if a wl_surface which already has another role is set, the server regards this as ++ error and disconnects the client. ++ ++ ++ ++ ++ ++ ++ ++ ++ +-- +1.9.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch new file mode 100644 index 000000000..8723def26 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch @@ -0,0 +1,539 @@ +From 1ddfa43692cabae0f552351cfbc09377e479471e Mon Sep 17 00:00:00 2001 +From: Manuel Bachmann +Date: Mon, 8 Sep 2014 11:38:01 +0200 +Subject: [PATCH 21/21] Implement initial IVI-Shell support + +IVI-Shell provides a shell interface for Weston, which maps the GENIVI API (http://www.genivi.org) for In-Vehicle Infotainment. + +This patch enables detecting the IVI-Shell interface at runtime, and creating compatible surfaces if found. + +Task-number: QTBUG-XXXXX/part/2of2 + +Change-Id: I1f6c11bf56b727a54fb48faab9c076b61d635440 +Signed-off-by: Manuel Bachmann +--- + src/client/client.pro | 5 ++ + src/client/qwaylanddisplay.cpp | 9 ++++ + src/client/qwaylanddisplay_p.h | 5 ++ + src/client/qwaylandivishell.cpp | 69 +++++++++++++++++++++++++ + src/client/qwaylandivishell_p.h | 70 +++++++++++++++++++++++++ + src/client/qwaylandivisurface.cpp | 105 ++++++++++++++++++++++++++++++++++++++ + src/client/qwaylandivisurface_p.h | 90 ++++++++++++++++++++++++++++++++ + src/client/qwaylandwindow.cpp | 8 ++- + 8 files changed, 360 insertions(+), 1 deletion(-) + create mode 100644 src/client/qwaylandivishell.cpp + create mode 100644 src/client/qwaylandivishell_p.h + create mode 100644 src/client/qwaylandivisurface.cpp + create mode 100644 src/client/qwaylandivisurface_p.h + +diff --git a/src/client/client.pro b/src/client/client.pro +index 73e3b7f..adb526d 100644 +--- a/src/client/client.pro ++++ b/src/client/client.pro +@@ -42,6 +42,7 @@ WAYLANDCLIENTSOURCES += \ + ../extensions/windowmanager.xml \ + ../3rdparty/protocol/text.xml \ + ../3rdparty/protocol/xdg-shell.xml \ ++ ../3rdparty/protocol/ivi-application.xml \ + + SOURCES += qwaylandintegration.cpp \ + qwaylandnativeinterface.cpp \ +@@ -61,6 +62,8 @@ SOURCES += qwaylandintegration.cpp \ + qwaylandwlshellsurface.cpp \ + qwaylandxdgshell.cpp \ + qwaylandxdgsurface.cpp \ ++ qwaylandivishell.cpp \ ++ qwaylandivisurface.cpp \ + qwaylandextendedoutput.cpp \ + qwaylandextendedsurface.cpp \ + qwaylandsubsurface.cpp \ +@@ -92,6 +95,8 @@ HEADERS += qwaylandintegration_p.h \ + qwaylandwlshellsurface_p.h \ + qwaylandxdgshell_p.h \ + qwaylandxdgsurface_p.h \ ++ qwaylandivishell_p.h \ ++ qwaylandivisurface_p.h \ + qwaylandextendedoutput_p.h \ + qwaylandextendedsurface_p.h \ + qwaylandsubsurface_p.h \ +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index 2e25672..2a93db7 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -51,6 +51,7 @@ + #include "qwaylanddatadevicemanager_p.h" + #include "qwaylandhardwareintegration_p.h" + #include "qwaylandxdgshell_p.h" ++#include "qwaylandivishell_p.h" + + #include "qwaylandwindowmanagerintegration_p.h" + +@@ -62,6 +63,7 @@ + + #include + #include ++#include + + #include + #include +@@ -207,6 +209,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin + mCompositor.init(registry, id); + } else if (interface == QStringLiteral("wl_shm")) { + mShm = static_cast(wl_registry_bind(registry, id, &wl_shm_interface,1)); ++ } else if (interface == QStringLiteral("ivi_application")) { ++ mShellIvi.reset(new QWaylandIviShell(registry,id)); + } else if (interface == QStringLiteral("xdg_shell") + && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { + mShellXdg.reset(new QWaylandXdgShell(registry,id)); +@@ -279,4 +283,9 @@ QtWayland::xdg_shell *QWaylandDisplay::shellXdg() + return mShellXdg.data(); + } + ++QtWayland::ivi_application *QWaylandDisplay::shellIvi() ++{ ++ return mShellIvi.data(); ++} ++ + QT_END_NAMESPACE +diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h +index f1b35a7..b9c686c 100644 +--- a/src/client/qwaylanddisplay_p.h ++++ b/src/client/qwaylanddisplay_p.h +@@ -52,6 +52,7 @@ + #include + #include + #include ++#include + + struct wl_cursor_image; + +@@ -72,6 +73,7 @@ class QWaylandWindow; + class QWaylandEventThread; + class QWaylandIntegration; + class QWaylandHardwareIntegration; ++class QWaylandIviShell; + class QWaylandXdgShell; + + namespace QtWayland { +@@ -81,6 +83,7 @@ namespace QtWayland { + class qt_surface_extension; + class wl_text_input_manager; + class xdg_shell; ++ class ivi_application; + } + + typedef void (*RegistryListener)(void *data, +@@ -117,6 +120,7 @@ public: + + QtWayland::wl_shell *shell() { return mShell.data(); } + QtWayland::xdg_shell *shellXdg(); ++ QtWayland::ivi_application *shellIvi(); + + QList inputDevices() const { return mInputDevices; } + QWaylandInputDevice *defaultInputDevice() const; +@@ -173,6 +177,7 @@ private: + QWaylandEventThread *mEventThreadObject; + QScopedPointer mShell; + QScopedPointer mShellXdg; ++ QScopedPointer mShellIvi; + QList mScreens; + QList mInputDevices; + QList mRegistryListeners; +diff --git a/src/client/qwaylandivishell.cpp b/src/client/qwaylandivishell.cpp +new file mode 100644 +index 0000000..9d63d0d +--- /dev/null ++++ b/src/client/qwaylandivishell.cpp +@@ -0,0 +1,69 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2014 Eurogiciel, author: ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "qwaylandivishell_p.h" ++ ++#include "qwaylanddisplay_p.h" ++#include "qwaylandwindow_p.h" ++#include "qwaylandinputdevice_p.h" ++#include "qwaylanddecoration_p.h" ++#include "qwaylandscreen_p.h" ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++QWaylandIviShell::QWaylandIviShell(struct ::ivi_application *shell) ++ : QtWayland::ivi_application(shell) ++{ ++} ++ ++QWaylandIviShell::QWaylandIviShell(struct ::wl_registry *registry, uint32_t id) ++ : QtWayland::ivi_application(registry, id) ++{ ++} ++ ++QWaylandIviShell::~QWaylandIviShell() ++{ ++ ivi_application_destroy(object()); ++} ++ ++QT_END_NAMESPACE +diff --git a/src/client/qwaylandivishell_p.h b/src/client/qwaylandivishell_p.h +new file mode 100644 +index 0000000..f9f6983 +--- /dev/null ++++ b/src/client/qwaylandivishell_p.h +@@ -0,0 +1,70 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2014 Eurogiciel, author: ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QWAYLANDIVISHELL_H ++#define QWAYLANDIVISHELL_H ++ ++#include ++ ++#include ++ ++#include ++#include ++#include "qwaylandshellsurface_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++class QWaylandWindow; ++class QWaylandInputDevice; ++class QWindow; ++ ++class Q_WAYLAND_CLIENT_EXPORT QWaylandIviShell : public QtWayland::ivi_application ++{ ++public: ++ QWaylandIviShell(struct ::ivi_application *shell); ++ QWaylandIviShell(struct ::wl_registry *registry, uint32_t id); ++ ++ virtual ~QWaylandIviShell(); ++}; ++ ++QT_END_NAMESPACE ++ ++#endif // QWAYLANDIVISHELL_H +diff --git a/src/client/qwaylandivisurface.cpp b/src/client/qwaylandivisurface.cpp +new file mode 100644 +index 0000000..a12309e +--- /dev/null ++++ b/src/client/qwaylandivisurface.cpp +@@ -0,0 +1,105 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "qwaylandivisurface_p.h" ++ ++#include "qwaylanddisplay_p.h" ++#include "qwaylandwindow_p.h" ++#include "qwaylandinputdevice_p.h" ++#include "qwaylanddecoration_p.h" ++#include "qwaylandscreen_p.h" ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++QWaylandIviSurface::QWaylandIviSurface(struct ::ivi_surface *ivi_surface, QWaylandWindow *window) ++ : QtWayland::ivi_surface(ivi_surface) ++ , m_window(window) ++{ ++} ++ ++QWaylandIviSurface::~QWaylandIviSurface() ++{ ++ ivi_surface_destroy(object()); ++} ++ ++void QWaylandIviSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) ++{ ++} ++ ++void QWaylandIviSurface::move(QWaylandInputDevice *inputDevice) ++{ ++} ++ ++void QWaylandIviSurface::setMaximized() ++{ ++} ++ ++void QWaylandIviSurface::setFullscreen() ++{ ++} ++ ++void QWaylandIviSurface::setNormal() ++{ ++} ++ ++void QWaylandIviSurface::setMinimized() ++{ ++} ++ ++void QWaylandIviSurface::setTopLevel() ++{ ++} ++ ++void QWaylandIviSurface::updateTransientParent(QWindow *parent) ++{ ++} ++ ++void QWaylandIviSurface::setTitle(const QString & title) ++{ ++} ++ ++void QWaylandIviSurface::setAppId(const QString & appId) ++{ ++} ++ ++QT_END_NAMESPACE +diff --git a/src/client/qwaylandivisurface_p.h b/src/client/qwaylandivisurface_p.h +new file mode 100644 +index 0000000..c6a7ce6 +--- /dev/null ++++ b/src/client/qwaylandivisurface_p.h +@@ -0,0 +1,90 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QWAYLANDIVISURFACE_H ++#define QWAYLANDIVISURFACE_H ++ ++#include ++ ++#include ++ ++#include ++#include ++#include "qwaylandshellsurface_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++class QWaylandWindow; ++class QWaylandInputDevice; ++class QWindow; ++class QWaylandExtendedSurface; ++ ++class Q_WAYLAND_CLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface ++ , public QWaylandShellSurface ++{ ++public: ++ QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window); ++ virtual ~QWaylandIviSurface(); ++ ++ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; ++ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; ++ ++ void setTitle(const QString &title) Q_DECL_OVERRIDE; ++ void setAppId(const QString &appId) Q_DECL_OVERRIDE; ++ ++private: ++ void setMaximized() Q_DECL_OVERRIDE; ++ void setFullscreen() Q_DECL_OVERRIDE; ++ void setNormal() Q_DECL_OVERRIDE; ++ void setMinimized() Q_DECL_OVERRIDE; ++ ++ void setTopLevel() Q_DECL_OVERRIDE; ++ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; ++ ++private: ++ QWaylandWindow *m_window; ++ ++ friend class QWaylandWindow; ++}; ++ ++QT_END_NAMESPACE ++ ++#endif // QWAYLANDIVISURFACE_H +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 3fb3a49..45a58f2 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -39,6 +39,8 @@ + ** + ****************************************************************************/ + ++#include ++ + #include "qwaylandwindow_p.h" + + #include "qwaylandbuffer_p.h" +@@ -48,10 +50,12 @@ + #include "qwaylandshellsurface_p.h" + #include "qwaylandwlshellsurface_p.h" + #include "qwaylandxdgsurface_p.h" ++#include "qwaylandivisurface_p.h" + #include "qwaylandextendedsurface_p.h" + #include "qwaylandsubsurface_p.h" + #include "qwaylanddecoration_p.h" + #include "qwaylandwindowmanagerintegration_p.h" ++#define IVI_SURFACE_ID 8000 + + #include + #include +@@ -95,7 +99,9 @@ QWaylandWindow::QWaylandWindow(QWindow *window) + mWindowId = id++; + + if (!(window->flags() & Qt::BypassWindowManagerHint)) { +- if (mDisplay->shellXdg()) { ++ if (mDisplay->shellIvi()) { ++ mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this); ++ } else if (mDisplay->shellXdg()) { + if (window->type() & Qt::Window) { + mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); + } +-- +1.9.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch new file mode 100644 index 000000000..99b519399 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch @@ -0,0 +1,14 @@ +diff --git a/tests/auto/compositor/compositor/compositor.pro b/tests/auto/compositor/compositor/compositor.pro +index f0cdaf32..64b60218 100644 +--- a/tests/auto/compositor/compositor/compositor.pro ++++ b/tests/auto/compositor/compositor/compositor.pro +@@ -7,9 +7,6 @@ QT += core-private gui-private waylandcompositor waylandcompositor-private + + QMAKE_USE += wayland-client wayland-server + +-qtConfig(xkbcommon-evdev): \ +- QMAKE_USE += xkbcommon_evdev +- + WAYLANDCLIENTSOURCES += \ + ../../../../src/3rdparty/protocol/xdg-shell.xml \ + ../../../../src/3rdparty/protocol/ivi-application.xml \ diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch new file mode 100644 index 000000000..bca61b5db --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch @@ -0,0 +1,31 @@ +From 9617c349a212d5407087daf4f4a2386bce94ecc1 Mon Sep 17 00:00:00 2001 +From: Philippe Coval +Date: Thu, 12 Jun 2014 11:55:29 +0200 +Subject: [PATCH 18/21] packaging: enable xdg-shell at runtime + +Change-Id: Iffbae496f1e09c8fa44a28d4eb515678e3bbb297 +Bug-Tizen: TIVI-3113/part +Signed-off-by: Philippe Coval +--- + packaging/qt5-qtwayland.spec | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/packaging/qt5-qtwayland.spec b/packaging/qt5-qtwayland.spec +index cba18e2..ff32185 100644 +--- a/packaging/qt5-qtwayland.spec ++++ b/packaging/qt5-qtwayland.spec +@@ -97,6 +97,11 @@ rm -rf %{buildroot} + + %post + /sbin/ldconfig ++ ++f="/etc/profile.d/qt.sh" ++grep QT_WAYLAND_USE_XDG_SHELL $f \ ++ || echo "QT_WAYLAND_USE_XDG_SHELL='defined'; export QT_WAYLAND_USE_XDG_SHELL" >> $f ++ + %postun + /sbin/ldconfig + +-- +1.9.1 + diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch new file mode 100644 index 000000000..f113266e4 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch @@ -0,0 +1,12 @@ +Index: git/qtwayland.pro +=================================================================== +--- git.orig/qtwayland.pro 2014-09-18 12:01:23.883582734 +0300 ++++ git/qtwayland.pro 2014-09-18 12:05:49.743574961 +0300 +@@ -7,7 +7,6 @@ + qtCompileTest(egl) + qtCompileTest(brcm_egl) + qtCompileTest(glx) +-qtCompileTest(xcomposite) + qtCompileTest(drm_egl_server) + + load(qt_parts) diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend new file mode 100644 index 000000000..9807840ca --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend @@ -0,0 +1,36 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" + +# QT_MODULE_BRANCH = "5.4" + +# TODO: +# These patches for IVI-SHELL are tempolary disabled because of issues. And new +# patches are proposed. +# +# file://0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch \ +# file://0021-Implement-initial-IVI-Shell-support.patch \ +# file://0001-protocol-update-3rd-party-ivi-application-protocol.patch \ +# file://0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch \ +# +# The xdg-shell merged into upstream, so we don't need these patch anymore. +# But xdg-shell doesn't work well in current AGL Distro because of +# mismatch of protocol versions between server(weston) and client(Qt Apps). +# +# file://0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch \ +# file://0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch \ +# file://0019-xdg-shell-upgrade-to-support-current-version-weston-.patch \ +# + +SRC_URI_append = "\ + file://0010-Added-manifest-file-according-to-smack-3-domain-mode.patch \ + " +SRC_URI_append_checkforkrogoth = "\ + file://disable_xcomposite_egl_qt_wayland_client_buffer_integration.patch \ + file://0001-Implement-initial-IVI-shell-support-with-shell-integ.patch \ + file://0002-Fix-multiple-QWindow.patch \ + " + + +DEPENDS_append_koelsch = " libegl gles-user-module" +DEPENDS_append_porter = " ${@base_conditional('PREFERRED_PROVIDER_virtual/egl', 'mesa', 'mesa', 'libegl gles-user-module', d)}" + +SRC_URI_append = " file://0099_qtwayland_no_evdev.patch " diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend new file mode 100644 index 000000000..0420578e1 --- /dev/null +++ b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend @@ -0,0 +1 @@ +PACKAGECONFIG = "gstreamer qtlocation qtmultimedia qtsensors" diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb new file mode 100644 index 000000000..c5cf71c12 --- /dev/null +++ b/meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb @@ -0,0 +1,18 @@ +SUMMARY = "Mediaplayer Service Binding" +DESCRIPTION = "AGL Mediaplayer Service Binding" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-mediaplayer" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-service-mediaplayer;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "${AGL_APP_REVISION}" + +PV = "1.0+git${SRCPV}" +S = "${WORKDIR}/git" + +DEPENDS = "json-c gstreamer1.0 gstreamer1.0-plugins-base" +RDEPENDS_${PN} = "agl-service-mediascanner gstreamer1.0-plugins-bad-waylandsink" + +inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-graphical/recipes-graphics/images/agl-image-weston.bb b/meta-agl-profile-graphical/recipes-graphics/images/agl-image-weston.bb deleted file mode 100644 index 427132ed6..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/images/agl-image-weston.bb +++ /dev/null @@ -1,12 +0,0 @@ -SUMMARY = "A very basic Wayland image with a terminal" - -require agl-image-weston.inc - -LICENSE = "MIT" - -IMAGE_INSTALL_append = "\ - packagegroup-agl-image-weston \ - " - -DISTRO_FEATURES_append = " agl-core-image-profile" -IMAGE_INSTALL_append = " agl-desktop-config" diff --git a/meta-agl-profile-graphical/recipes-graphics/images/agl-image-weston.inc b/meta-agl-profile-graphical/recipes-graphics/images/agl-image-weston.inc deleted file mode 100644 index 947d22b50..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/images/agl-image-weston.inc +++ /dev/null @@ -1,7 +0,0 @@ -require recipes-core/images/agl-image-minimal.inc - -IMAGE_FEATURES += "splash package-management ssh-server-dropbear" - -inherit distro_features_check - -REQUIRED_DISTRO_FEATURES = "wayland" diff --git a/meta-agl-profile-graphical/recipes-graphics/packagegroups/packagegroup-agl-image-weston.bb b/meta-agl-profile-graphical/recipes-graphics/packagegroups/packagegroup-agl-image-weston.bb deleted file mode 100644 index dcf21bcfb..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/packagegroups/packagegroup-agl-image-weston.bb +++ /dev/null @@ -1,17 +0,0 @@ -DESCRIPTION = "The minimal set of packages required for basic Wayland image" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-image-weston \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "weston weston-init weston-ini-conf weston-examples" -RDEPENDS_${PN} += "agl-login-manager" - -RDEPENDS_${PN} += "\ - packagegroup-agl-image-minimal \ - " diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Resolve-weston-crush-when-repeat-touching-very-quick.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Resolve-weston-crush-when-repeat-touching-very-quick.patch deleted file mode 100644 index 636ecf1b9..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Resolve-weston-crush-when-repeat-touching-very-quick.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 97af4843a4705cd7d5b6b69abb9002fd974a5b94 Mon Sep 17 00:00:00 2001 -From: Tadao Tanikawa -Date: Fri, 12 Jan 2018 01:53:01 +0900 -Subject: [PATCH] Resolve weston cursh when repeat touching very quickly - -Weston sometimes crush while the user repeat touching very -quickly icons/shortcuts on HomeScreen. - -Signed-off-by: Tadao Tanikawa ---- - ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c -index b0fe37d..f1a31d0 100644 ---- a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c -+++ b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c -@@ -557,6 +557,10 @@ touch_grab_up(struct weston_touch_grab *grab, uint32_t time, int touch_id) - const struct ivi_layout_interface *interface = - seat->input_ctx->ivi_layout_interface; - -+ /* if touch device has no focused view, there is nothing to do*/ -+ if (grab->touch->focus == NULL) -+ return; -+ - /* For each surface_ctx, check for focus and send */ - wl_list_for_each(surf_ctx, &seat->input_ctx->surface_list, link) { - struct weston_surface *surf, *send_surf; --- -2.7.4 - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-initial-commit.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-initial-commit.patch deleted file mode 100644 index 9e95167ed..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-initial-commit.patch +++ /dev/null @@ -1,264 +0,0 @@ -From 8f67f40f7c6b6f62e094f0bdc5044793ae76b1c7 Mon Sep 17 00:00:00 2001 -From: Emre Ucan -Date: Fri, 24 Nov 2017 16:24:51 +0100 -Subject: [PATCH 1/2] simple-id-agent: initial commit - -it is a very simple id-agent plugin. -It is possible to configure default surface id -offset. Assigned ids would start -from the given id offset. - -Please check the example weston.ini for loading -and configuring the simple-id-agent - -Signed-off-by: Emre Ucan ---- - CMakeLists.txt | 1 + - id-agent-modules/simple-id-agent/CMakeLists.txt | 72 ++++++++++++ - .../simple-id-agent/src/simple-id-agent.c | 124 +++++++++++++++++++++ - id-agent-modules/simple-id-agent/weston.ini.in | 11 ++ - 4 files changed, 208 insertions(+) - create mode 100644 id-agent-modules/simple-id-agent/CMakeLists.txt - create mode 100644 id-agent-modules/simple-id-agent/src/simple-id-agent.c - create mode 100644 id-agent-modules/simple-id-agent/weston.ini.in - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index bad85df..d07abf5 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -35,6 +35,7 @@ add_subdirectory(ivi-layermanagement-api/ilmClient) - add_subdirectory(ivi-layermanagement-api/ilmControl) - add_subdirectory(ivi-layermanagement-api/test) - add_subdirectory(ivi-layermanagement-examples) -+add_subdirectory(id-agent-modules/simple-id-agent) - - if(WITH_ILM_INPUT) - add_subdirectory(ivi-input-api/ilmInput) -diff --git a/id-agent-modules/simple-id-agent/CMakeLists.txt b/id-agent-modules/simple-id-agent/CMakeLists.txt -new file mode 100644 -index 0000000..8290722 ---- /dev/null -+++ b/id-agent-modules/simple-id-agent/CMakeLists.txt -@@ -0,0 +1,72 @@ -+############################################################################ -+# -+# Copyright (C) 2013 DENSO CORPORATION -+# Copyright 2014 BMW Car IT GmbH -+# -+# -+# 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. -+# -+############################################################################ -+ -+cmake_minimum_required (VERSION 2.6) -+ -+project(simple-id-agent) -+ -+find_package(PkgConfig REQUIRED) -+pkg_check_modules(WAYLAND_SERVER wayland-server>=1.13.0 REQUIRED) -+pkg_check_modules(WESTON weston>=2.0.0 REQUIRED) -+pkg_check_modules(PIXMAN pixman-1 REQUIRED) -+ -+find_package(Threads REQUIRED) -+ -+GET_TARGET_PROPERTY(IVI_EXTENSION_INCLUDE_DIRS ivi-extension-protocol INCLUDE_DIRECTORIES) -+ -+include_directories( -+ src -+ ${IVI_EXTENSION_INCLUDE_DIRS} -+ ${WAYLAND_SERVER_INCLUDE_DIRS} -+ ${WESTON_INCLUDE_DIRS} -+ ${PIXMAN_INCLUDE_DIRS} -+) -+ -+link_directories( -+ ${WAYLAND_SERVER_LIBRARY_DIRS} -+ ${PIXMAN_LIBRARY_DIRS} -+) -+ -+add_library(${PROJECT_NAME} MODULE -+ src/simple-id-agent.c -+) -+ -+set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "") -+ -+add_dependencies(${PROJECT_NAME} -+ ivi-extension-protocol -+ ${WAYLAND_SERVER_LIBRARIES} -+ ${PIXMAN_LIBRARIES} -+) -+ -+set(LIBS -+ ${LIBS} -+ ivi-extension-protocol -+ ${WAYLAND_SERVER_LIBRARIES} -+) -+ -+set(CMAKE_C_LDFLAGS "-module -avoid-version") -+ -+target_link_libraries(${PROJECT_NAME} ${LIBS}) -+ -+install ( -+ TARGETS ${PROJECT_NAME} -+ LIBRARY DESTINATION lib${LIB_SUFFIX}/weston -+) -diff --git a/id-agent-modules/simple-id-agent/src/simple-id-agent.c b/id-agent-modules/simple-id-agent/src/simple-id-agent.c -new file mode 100644 -index 0000000..3c9e989 ---- /dev/null -+++ b/id-agent-modules/simple-id-agent/src/simple-id-agent.c -@@ -0,0 +1,124 @@ -+/* -+ * Copyright (C) 2017 Advanced Driver Information Technology Joint Venture GmbH -+ * -+ * Permission to use, copy, modify, distribute, and sell this software and -+ * its documentation for any purpose is hereby granted without fee, provided -+ * that the above copyright notice appear in all copies and that both that -+ * copyright notice and this permission notice appear in supporting -+ * documentation, and that the name of the copyright holders not be used in -+ * advertising or publicity pertaining to distribution of the software -+ * without specific, written prior permission. The copyright holders make -+ * no representations about the suitability of this software for any -+ * purpose. It is provided "as is" without express or implied warranty. -+ * -+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+struct ivi_id_agent -+{ -+ uint32_t default_id_offset; -+ uint32_t last_assigned_id; -+ struct weston_compositor *compositor; -+ const struct ivi_layout_interface *interface; -+ struct wl_listener desktop_surface_configured; -+}; -+ -+static void -+desktop_surface_event_configure(struct wl_listener *listener, -+ void *data) -+{ -+ struct ivi_id_agent *ida = wl_container_of(listener, ida, -+ desktop_surface_configured); -+ struct ivi_layout_surface *layout_surface = -+ (struct ivi_layout_surface *) data; -+ uint32_t tmp_id; -+ -+ tmp_id = ++ida->last_assigned_id; -+ -+ /* Find an unused id */ -+ while(ida->interface->get_surface_from_id(tmp_id)) { -+ weston_log("simple-id-agent: surface id: %d is already used\n", tmp_id); -+ tmp_id++; -+ } -+ -+ ida->last_assigned_id = tmp_id; -+ -+ if (ida->interface->surface_set_id(layout_surface, ida->last_assigned_id) != 0) -+ weston_log("simple-id-agent: failed to set surface id :%d\n", ida->last_assigned_id); -+} -+ -+static void -+deinit(struct ivi_id_agent *ida) -+{ -+ wl_list_remove(&ida->desktop_surface_configured.link); -+ free(ida); -+} -+ -+static int32_t -+read_config(struct ivi_id_agent *ida) -+{ -+ struct weston_config *config = NULL; -+ struct weston_config_section *section = NULL; -+ const char *name = NULL; -+ -+ config = wet_get_config(ida->compositor); -+ if (!config) -+ return -1; -+ -+ section = weston_config_get_section(config, "id-agent", NULL, NULL); -+ -+ if (section) { -+ -+ weston_config_section_get_uint(section, "default-id-offset", -+ &ida->default_id_offset, 0); -+ -+ } else { -+ ida->default_id_offset = 0; -+ } -+ -+ return 0; -+} -+ -+WL_EXPORT int32_t -+id_agent_module_init(struct weston_compositor *ec, -+ const struct ivi_layout_interface *interface, -+ size_t interface_version) -+{ -+ struct ivi_id_agent *ida; -+ -+ ida = calloc(1, sizeof *ida); -+ if (ida == NULL) { -+ weston_log("failed to allocate ivi_id_agent\n"); -+ return -1; -+ } -+ -+ ida->compositor = ec; -+ ida->interface = interface; -+ ida->desktop_surface_configured.notify = desktop_surface_event_configure; -+ ida->interface->add_listener_configure_desktop_surface(&ida->desktop_surface_configured); -+ -+ if(read_config(ida) != 0) { -+ deinit(ida); -+ return -1; -+ } -+ -+ ida->last_assigned_id = ida->default_id_offset; -+ -+ weston_log("id_agent_module_init: success\n"); -+ -+ return 0; -+} -diff --git a/id-agent-modules/simple-id-agent/weston.ini.in b/id-agent-modules/simple-id-agent/weston.ini.in -new file mode 100644 -index 0000000..b5e5fa1 ---- /dev/null -+++ b/id-agent-modules/simple-id-agent/weston.ini.in -@@ -0,0 +1,11 @@ -+[core] -+shell=ivi-shell.so -+require-input=false -+ -+[ivi-shell] -+ivi-module=ivi-controller.so -+ivi-input-module=ivi-input-controller.so -+id-agent-module=simple-id-agent.so -+ -+[id-agent] -+default-id-offset=10 --- -2.13.6 - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-controller-load-id-agent-module.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-controller-load-id-agent-module.patch deleted file mode 100644 index f44786a36..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-controller-load-id-agent-module.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 26f2f7ce78ba2002809048b227ad9c35921a9cd8 Mon Sep 17 00:00:00 2001 -From: Emre Ucan -Date: Fri, 24 Nov 2017 16:27:01 +0100 -Subject: [PATCH 2/2] ivi-controller: load id-agent module - -Signed-off-by: Emre Ucan ---- - weston-ivi-shell/src/ivi-controller.c | 39 +++++++++++++++++++++++++++++++++++ - 1 file changed, 39 insertions(+) - -diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c -index 312a978..47b6de2 100644 ---- a/weston-ivi-shell/src/ivi-controller.c -+++ b/weston-ivi-shell/src/ivi-controller.c -@@ -1518,6 +1518,40 @@ load_input_module(struct weston_compositor *ec, - return 0; - } - -+static int load_id_agent_module(struct weston_compositor *ec, -+ const struct ivi_layout_interface *interface, -+ size_t interface_version) -+{ -+ struct weston_config *config = wet_get_config(ec); -+ struct weston_config_section *section; -+ char *id_agent_module = NULL; -+ -+ int (*id_agent_module_init)(struct weston_compositor *ec, -+ const struct ivi_layout_interface *interface, -+ size_t interface_version); -+ -+ section = weston_config_get_section(config, "ivi-shell", NULL, NULL); -+ -+ if (weston_config_section_get_string(section, "id-agent-module", -+ &id_agent_module, NULL) < 0) { -+ weston_log("ivi-controller: No id-agent-module set\n"); -+ return 0; -+ } -+ -+ id_agent_module_init = wet_load_module_entrypoint(id_agent_module, "id_agent_module_init"); -+ if (!id_agent_module_init) -+ return -1; -+ -+ if (id_agent_module_init(ec, interface, -+ sizeof(struct ivi_layout_interface)) != 0) { -+ weston_log("ivi-controller: Initialization of id agent module fails\n"); -+ return -1; -+ } -+ -+ free(id_agent_module); -+ return 0; -+} -+ - WL_EXPORT int - controller_module_init(struct weston_compositor *compositor, - int *argc, char *argv[], -@@ -1555,5 +1589,10 @@ controller_module_init(struct weston_compositor *compositor, - return -1; - } - -+ if (load_id_agent_module(compositor, interface, interface_version) < 0) { -+ free(shell); -+ return -1; -+ } -+ - return 0; - } --- -2.13.6 - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-add-resize-setting-suit-to-surface-si.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-add-resize-setting-suit-to-surface-si.patch deleted file mode 100644 index d2d027256..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-add-resize-setting-suit-to-surface-si.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 525b5bf65303d661f44c01b11bafd5ba90976850 Mon Sep 17 00:00:00 2001 -From: Wataru Mizuno -Date: Wed, 6 Dec 2017 19:35:51 +0900 -Subject: [PATCH] ivi-controller: add resize setting suit to surface size - -The ivi-controller resizes surface size like desktop usecase. - -When window manager swicths the half size window to full size, -resize was not working correctly. -This patch fixs this issue by changing surface source region at -the same timing of destination region is changed. - -This patch is not necessary later version of wayland-ivi-extension -2.0 since this resize function has already been implemented by -appropriate manner. - -Signed-off-by: Wataru Mizuno ---- - weston-ivi-shell/src/ivi-controller.c | 17 ++++++++++++++--- - 1 file changed, 14 insertions(+), 3 deletions(-) - -diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c -index 312a978..9450cf2 100644 ---- a/weston-ivi-shell/src/ivi-controller.c -+++ b/weston-ivi-shell/src/ivi-controller.c -@@ -1334,7 +1334,7 @@ surface_event_configure(struct wl_listener *listener, void *data) - struct ivisurface *ivisurf = NULL; - struct ivi_layout_surface *layout_surface = - (struct ivi_layout_surface *) data; -- const struct ivi_layout_surface_properties *prop; -+ struct weston_surface *w_surface; - - ivisurf = get_surface(&shell->list_surface, layout_surface); - if (ivisurf == NULL) { -@@ -1342,11 +1342,22 @@ surface_event_configure(struct wl_listener *listener, void *data) - return; - } - -- prop = lyt->get_properties_of_surface(layout_surface); -+ w_surface = lyt->surface_get_weston_surface(layout_surface); -+ lyt->surface_set_destination_rectangle(layout_surface, -+ ivisurf->prop->dest_x, -+ ivisurf->prop->dest_y, -+ w_surface->width, -+ w_surface->height); -+ lyt->surface_set_source_rectangle(layout_surface, -+ 0, -+ 0, -+ w_surface->width, -+ w_surface->height); -+ lyt->commit_changes(); - - wl_resource_for_each(resource, &ivisurf->resource_list) { - send_surface_event(resource, ivisurf, -- prop, IVI_NOTIFICATION_CONFIGURE); -+ ivisurf->prop, IVI_NOTIFICATION_CONFIGURE); - } - } - --- -2.7.4 - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/cmake-find-gtest.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/cmake-find-gtest.patch deleted file mode 100644 index 5371174d5..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/cmake-find-gtest.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -Naur old/ivi-input-api/test/CMakeLists.txt new/ivi-input-api/test/CMakeLists.txt ---- old/ivi-input-api/test/CMakeLists.txt 2015-10-19 23:31:13.000000000 +1000 -+++ new/ivi-input-api/test/CMakeLists.txt 2015-10-19 23:30:32.000000000 +1000 -@@ -18,6 +18,7 @@ - ############################################################################ - - CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -+SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules) - - FIND_PACKAGE(gtest) - -diff -Naur old/ivi-layermanagement-api/test/CMakeLists.txt new/ivi-layermanagement-api/test/CMakeLists.txt ---- old/ivi-layermanagement-api/test/CMakeLists.txt 2015-10-19 23:31:20.000000000 +1000 -+++ new/ivi-layermanagement-api/test/CMakeLists.txt 2015-10-19 23:30:48.000000000 +1000 -@@ -18,6 +18,7 @@ - ############################################################################ - - CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -+SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules) - - FIND_PACKAGE(gtest) - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/disable-sanitizer-tests.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/disable-sanitizer-tests.patch deleted file mode 100644 index df5d616fd..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/disable-sanitizer-tests.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: git/ivi-layermanagement-api/test/CMakeLists.txt -=================================================================== ---- git.orig/ivi-layermanagement-api/test/CMakeLists.txt -+++ git/ivi-layermanagement-api/test/CMakeLists.txt -@@ -58,7 +58,7 @@ IF(BUILD_ILM_API_TESTS) - ) - - SET(GCC_SANITIZER_COMPILE_FLAGS "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover -fstack-protector-all") -- SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_SANITIZER_COMPILE_FLAGS}" ) -+ SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" ) - SET( CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -static-libasan -static-libubsan" ) - - ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_FILES}) diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/test-path.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/test-path.patch deleted file mode 100644 index 251bc58f0..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/test-path.patch +++ /dev/null @@ -1,55 +0,0 @@ -From fbe0d0fd35ff79561dc2da853f1b0903bfde428d Mon Sep 17 00:00:00 2001 -From: Changhyeok Bae -Date: Thu, 1 Jun 2017 07:45:20 +0000 -Subject: [PATCH] test patch - ---- - ivi-input-api/test/CMakeLists.txt | 9 +++++---- - ivi-layermanagement-api/test/CMakeLists.txt | 7 ++++--- - 2 files changed, 9 insertions(+), 7 deletions(-) - -diff --git a/ivi-input-api/test/CMakeLists.txt b/ivi-input-api/test/CMakeLists.txt -index db05d0f..db3b745 100644 ---- a/ivi-input-api/test/CMakeLists.txt -+++ b/ivi-input-api/test/CMakeLists.txt -@@ -65,12 +65,13 @@ IF(BUILD_ILM_API_TESTS) - - ADD_DEPENDENCIES(${PROJECT_NAME} ${LIBS}) - -- INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) -+ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/test) -+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/CTestTestfile.cmake DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/test/ivi-layermanagement-api) - - # use CTest - ENABLE_TESTING() -- ADD_TEST(ilmCommon ${PROJECT_NAME}) -- ADD_TEST(ilmControl ${PROJECT_NAME}) -- ADD_TEST(ilmInput ${PROJECT_NAME}) -+ ADD_TEST(ilmCommon {CMAKE_INSTALL_LIBEXECDIR}/test/${PROJECT_NAME}) -+ ADD_TEST(ilmControl {CMAKE_INSTALL_LIBEXECDIR}/test/${PROJECT_NAME}) -+ ADD_TEST(ilmInput {CMAKE_INSTALL_LIBEXECDIR}/test/${PROJECT_NAME}) - - ENDIF() -diff --git a/ivi-layermanagement-api/test/CMakeLists.txt b/ivi-layermanagement-api/test/CMakeLists.txt -index fe9a0a4..090d734 100644 ---- a/ivi-layermanagement-api/test/CMakeLists.txt -+++ b/ivi-layermanagement-api/test/CMakeLists.txt -@@ -63,11 +63,12 @@ IF(BUILD_ILM_API_TESTS) - - ADD_DEPENDENCIES(${PROJECT_NAME} ${LIBS}) - -- INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) -+ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/test) -+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/CTestTestfile.cmake DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/test/ivi-layermanagement-api) - - # use CTest - ENABLE_TESTING() -- ADD_TEST(ilmCommon ${PROJECT_NAME}) -- ADD_TEST(ilmControl ${PROJECT_NAME}) -+ ADD_TEST(ilmCommon ${CMAKE_INSTALL_LIBEXECDIR}/test/${PROJECT_NAME}) -+ ADD_TEST(ilmControl ${CMAKE_INSTALL_LIBEXECDIR}/test/${PROJECT_NAME}) - - ENDIF() --- -2.7.4 - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch deleted file mode 100644 index 86b448be1..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 3610fa9..8b4614d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -34,7 +34,7 @@ add_subdirectory(ivi-layermanagement-api/ilmCommon) - add_subdirectory(ivi-layermanagement-api/ilmClient) - add_subdirectory(ivi-layermanagement-api/ilmControl) - add_subdirectory(ivi-layermanagement-api/test) --add_subdirectory(ivi-layermanagement-examples) -+#add_subdirectory(ivi-layermanagement-examples) - - if(WITH_ILM_INPUT) - add_subdirectory(ivi-input-api/ilmInput) diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_1.1%.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_1.1%.bbappend deleted file mode 100644 index 9c29dee47..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_1.1%.bbappend +++ /dev/null @@ -1,27 +0,0 @@ -FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" - -ENABLE_TEST = "-DBUILD_ILM_API_TESTS:BOOL=TRUE \ - -DINSTALL_ILM_API_TESTS:BOOL=TRUE \ - " - -DISABLE_TEST = "-DBUILD_ILM_API_TESTS:BOOL=FALSE \ - -DINSTALL_ILM_API_TESTS:BOOL=FALSE \ - " - -PACKAGECONFIG ??= "test" -PACKAGECONFIG[test] = "${ENABLE_TEST},${DISABLE_TEST},gtest" - -SRC_URI_append = "\ - file://cmake-find-gtest.patch \ - file://test-path.patch \ - " - -PACKAGES =+ "${PN}-test" - -FILES_${PN}-test = "${libdir}/${PN}/test/*/CTestTestfile.cmake \ - ${libdir}/${PN}/test/ivi-layermanagement-api-test \ - ${libdir}/${PN}/test/ivi-input-api-test \ - " -FILES_${PN}-dbg += "${libdir}/${PN}/test/.debug" - -RDEPENDS_${PN}-test += "cmake" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_1.13.0.bb b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_1.13.0.bb deleted file mode 100644 index 68e92adb5..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_1.13.0.bb +++ /dev/null @@ -1,33 +0,0 @@ -SUMMARY = "Wayland IVI Extension" -DESCRIPTION = "GENIVI Layer Management API based on Wayland IVI Extension" -HOMEPAGE = "http://projects.genivi.org/wayland-ivi-extension" -BUGTRACKER = "http://bugs.genivi.org/enter_bug.cgi?product=Wayland%20IVI%20Extension" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=1f1a56bb2dadf5f2be8eb342acf4ed79" - -SRCREV = "ede33c1c898eeaf673dd2c275e92763a5aabd066" -SRC_URI = "git://github.com/GENIVI/${BPN}.git;protocol=http \ - file://0001-simple-id-agent-initial-commit.patch;patch=1 \ - file://0002-ivi-controller-load-id-agent-module.patch;patch=1 \ - file://0003-ivi-controller-add-resize-setting-suit-to-surface-si.patch \ - file://0001-Resolve-weston-crush-when-repeat-touching-very-quick.patch \ -" -S = "${WORKDIR}/git" - -DEPENDS = "weston virtual/libgles2 pixman wayland-native" - -inherit cmake - -EXTRA_OECMAKE := "-DWITH_ILM_INPUT=1" - -FILES_${PN} += "${libdir}/weston/*" -FILES_${PN}-dbg += "${libdir}/weston/.debug/*" - -EXTRA_OECMAKE += "-DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')}" - -FILESEXTRAPATHS_prepend := ":${THISDIR}/wayland-ivi-extension:" - -SRC_URI_append_wandboard = " file://wandboard_fix_build.patch" - -# workaround paralellism issue: -PARALLEL_MAKE = "" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_2.0.2.bb b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_2.0.2.bb deleted file mode 100644 index ea74e384c..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_2.0.2.bb +++ /dev/null @@ -1,31 +0,0 @@ -SUMMARY = "Wayland IVI Extension" -DESCRIPTION = "GENIVI Layer Management API based on Wayland IVI Extension" -HOMEPAGE = "http://projects.genivi.org/wayland-ivi-extension" -BUGTRACKER = "http://bugs.genivi.org/enter_bug.cgi?product=Wayland%20IVI%20Extension" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=1f1a56bb2dadf5f2be8eb342acf4ed79" - -SRCREV = "ff067a640451de46836200624ece7ac777977c30" -SRC_URI = "git://github.com/GENIVI/${BPN}.git;branch=2.0;protocol=http \ - " -SRC_URI_append_wandboard = " file://wandboard_fix_build.patch" - -S = "${WORKDIR}/git" - -DEPENDS = "weston virtual/libgles2 pixman wayland-native" - -FILESEXTRAPATHS_prepend := ":${THISDIR}/wayland-ivi-extension:" - -# workaround paralellism issue: -PARALLEL_MAKE = "" - -inherit cmake - -EXTRA_OECMAKE := "-DWITH_ILM_INPUT=1" - -FILES_${PN} += "${libdir}/weston/*" -FILES_${PN} += "${datadir}/wayland-protocols/stable/ivi-application/*" - -FILES_${PN}-dbg += "${libdir}/weston/.debug/*" - -EXTRA_OECMAKE += "-DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')}" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bb b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bb deleted file mode 100644 index 4628f96f8..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bb +++ /dev/null @@ -1,30 +0,0 @@ -SUMMARY = "Startup script and systemd unit file for the Weston Wayland compositor" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" - -SRC_URI = "file://core.cfg \ - file://ivishell.cfg \ - file://id-agent.cfg \ - file://shell.cfg \ - file://hdmi-a-1-270.cfg \ - " - -S = "${WORKDIR}" - -PACKAGE_ARCH = "${MACHINE_ARCH}" - -do_compile() { - # Put all of our cfg files together. - rm -f ${WORKDIR}/weston.ini - for F in ${WORKDIR}/*.cfg; do - cat $F >> ${WORKDIR}/weston.ini - echo >> ${WORKDIR}/weston.ini - done - sed -i -e '$ d' ${WORKDIR}/weston.ini -} - -do_install_append() { - WESTON_INI_CONFIG=${sysconfdir}/xdg/weston - install -d ${D}${WESTON_INI_CONFIG} - install -m 0644 ${WORKDIR}/weston.ini ${D}${WESTON_INI_CONFIG}/weston.ini -} diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bbappend deleted file mode 100644 index d778459f2..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf.bbappend +++ /dev/null @@ -1,15 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -# -SRC_URI += "${@bb.utils.contains("DISTRO_FEATURES", "virtual-display", "file://virtualoutput.cfg", "",d)}" - -do_configure_append() { - if ${@bb.utils.contains('DISTRO_FEATURES', 'virtual-display', 'true', 'false', d)}; then - echo virtual=1 >> ${WORKDIR}/core.cfg - fi - - if ${@bb.utils.contains('DISTRO_FEATURES', 'gst-record', 'true', 'false', d)}; then - echo recorder=true >> ${WORKDIR}/virtualoutput.cfg - fi -} - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/core.cfg b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/core.cfg deleted file mode 100644 index a0ec1e181..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/core.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[core] -shell=ivi-shell.so -backend=drm-backend.so -require-input=false diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg deleted file mode 100644 index dffc2b6dd..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# A display is connected to HDMI-A-1 and needs to be rotated 270 degrees -# to have a proper orientation of the homescreen. For example the various sizes -# of the GeChic display or the Dell display. -[output] -name=HDMI-A-1 -transform=270 diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg deleted file mode 100644 index 88a692a1b..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# A display is connected to HDMI-A-1 and needs to be rotated 90 degrees -# to have a proper orientation of the homescreen. For example, the 'eGalax' -# display used in some instances. -[output] -name=HDMI-A-1 -transform=90 diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/id-agent.cfg b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/id-agent.cfg deleted file mode 100644 index 726fca5f1..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/id-agent.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[id-agent] -default-id-offset=1000 diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/ivishell.cfg b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/ivishell.cfg deleted file mode 100644 index f0548f291..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/ivishell.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[ivi-shell] -ivi-input-module=ivi-input-controller.so -ivi-module=ivi-controller.so -id-agent-module=simple-id-agent.so diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/shell.cfg b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/shell.cfg deleted file mode 100644 index 056770427..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/shell.cfg +++ /dev/null @@ -1,3 +0,0 @@ -[shell] -locking=true -panel-location=none diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/virtualoutput.cfg b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/virtualoutput.cfg deleted file mode 100644 index 76f536ff8..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ini-conf/virtualoutput.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[output] -name=virtual1 -mode=1920x1080@30 -ip=192.168.20.99 -port=5005 -bitrate=3000000 -crop=384x368@0x0 diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend deleted file mode 100644 index 38590dcdb..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -DEPENDS_append_ulcb = " gstreamer1.0-plugins-base" diff --git a/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.bb b/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.bb new file mode 100644 index 000000000..6c9bee7f1 --- /dev/null +++ b/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.bb @@ -0,0 +1,9 @@ +SUMMARY = "A very basic Wayland image with a terminal" + +require agl-image-weston.inc + +LICENSE = "MIT" + +IMAGE_INSTALL_append = "\ + profile-agl-graphical \ + " diff --git a/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.inc b/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.inc new file mode 100644 index 000000000..ed1634fcc --- /dev/null +++ b/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.inc @@ -0,0 +1,7 @@ +require recipes-platform/images/agl-image-minimal.inc + +IMAGE_FEATURES += "splash package-management ssh-server-dropbear" + +inherit distro_features_check + +REQUIRED_DISTRO_FEATURES = "wayland" diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb new file mode 100644 index 000000000..b80089a94 --- /dev/null +++ b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "The minimal set of packages for Connectivity Subsystem" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-graphical-services \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ +agl-service-mediaplayer \ + " diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-image-weston.bb b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-image-weston.bb new file mode 100644 index 000000000..d622298c6 --- /dev/null +++ b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-image-weston.bb @@ -0,0 +1,22 @@ +DESCRIPTION = "The minimal set of packages required for basic Wayland image" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-image-weston \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += " \ + weston \ + weston-init \ + weston-ini-conf \ + weston-examples \ + agl-login-manager \ + agl-desktop-config \ + packagegroup-agl-graphical-services \ + profile-agl-minimal \ + " + diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb new file mode 100644 index 000000000..46187fed3 --- /dev/null +++ b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb @@ -0,0 +1,20 @@ +SUMMARY = "The middlewares for AGL IVI profile" +DESCRIPTION = "The set of packages required for AGL Distribution" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-profile-graphical \ + profile-graphical \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-image-minimal \ + packagegroup-agl-image-weston \ + packagegroup-agl-graphical-services \ +" + +RDEPENDS_profile-graphical = "${PN}" diff --git a/meta-agl-profile-graphical/recipes-sdl/packagegroups/packagegroup-agl-smartdevicelink.bb b/meta-agl-profile-graphical/recipes-sdl/packagegroups/packagegroup-agl-smartdevicelink.bb deleted file mode 100644 index 7d135356a..000000000 --- a/meta-agl-profile-graphical/recipes-sdl/packagegroups/packagegroup-agl-smartdevicelink.bb +++ /dev/null @@ -1,17 +0,0 @@ -DESCRIPTION = "Set of packages for SmartDeviceLink" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-smartdevicelink \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - sdl-core \ - " - -# Porter does not have the required gstreamer version -RDEPENDS_${PN}_porter := "" diff --git a/meta-agl-profile-hud/conf/layer.conf b/meta-agl-profile-hud/conf/layer.conf new file mode 100644 index 000000000..57fb70f0c --- /dev/null +++ b/meta-agl-profile-hud/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH =. "${LAYERDIR}:" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "aglprofilehud" +BBFILE_PATTERN_aglprofilehud = "^${LAYERDIR}/" +BBFILE_PRIORITY_aglprofilehud = "70" diff --git a/meta-agl-profile-telematics/conf/layer.conf b/meta-agl-profile-telematics/conf/layer.conf new file mode 100644 index 000000000..e563143b9 --- /dev/null +++ b/meta-agl-profile-telematics/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH =. "${LAYERDIR}:" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "aglprofiletelematics" +BBFILE_PATTERN_aglprofiletelematics = "^${LAYERDIR}/" +BBFILE_PRIORITY_aglprofiletelematics = "70" diff --git a/meta-app-framework/recipes-apps/agl-service-can-low-level/agl-service-can-low-level_git.bb b/meta-app-framework/recipes-apps/agl-service-can-low-level/agl-service-can-low-level_git.bb deleted file mode 100644 index 78d96e928..000000000 --- a/meta-app-framework/recipes-apps/agl-service-can-low-level/agl-service-can-low-level_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Low level CAN service" -DESCRIPTION = "AGL Service application for read and decode CAN messages" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/low-level-can-service" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/low-level-can-service;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "d8d990528ea9746b21788f97be3fdbcc392c5d96" - -PV = "5.0+git${SRCPV}" -S = "${WORKDIR}/git" - -RDEPENDS_${PN} = "dev-mapping" - -inherit cmake aglwgt pkgconfig - diff --git a/meta-app-framework/recipes-config/agl-users/agl-users_0.1.bb b/meta-app-framework/recipes-config/agl-users/agl-users_0.1.bb deleted file mode 100644 index 79a9461e0..000000000 --- a/meta-app-framework/recipes-config/agl-users/agl-users_0.1.bb +++ /dev/null @@ -1,27 +0,0 @@ -inherit allarch useradd - -SUMMARY = "AGL Users Seed" -DESCRIPTION = "This is a core framework component that\ - defines how users are managed and who are the default users." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -ALLOW_EMPTY_${PN} = "1" - -USERADD_PACKAGES = "${PN}" - -USERADDEXTENSION = "useradd-staticids" - -GROUPADD_PARAM_${PN} = "\ - --system display ; \ - --system weston-launch ; \ - -g 1001 agl-driver ; \ - -g 1002 agl-passenger \ -" - -USERADD_PARAM_${PN} = "\ - -g 1001 -G display -u 1001 -o -d /home/1001 -m -K PASS_MAX_DAYS=-1 agl-driver ; \ - -g 1002 -G display -u 1002 -o -d /home/1002 -m -K PASS_MAX_DAYS=-1 agl-passenger ; \ - --gid display --groups weston-launch,video,input --home-dir /run/platform/display --shell /bin/false --comment \"Display daemon\" --key PASS_MAX_DAYS=-1 display \ -" diff --git a/meta-app-framework/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default b/meta-app-framework/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default deleted file mode 100644 index 7bd8bf2eb..000000000 --- a/meta-app-framework/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default +++ /dev/null @@ -1,6 +0,0 @@ -; Default CAN device mapping -; Format has to follow ini rules key="value", notice " around value. - -[CANbus-mapping] -hs="can0" -ls="can0" diff --git a/meta-app-framework/recipes-config/dev-mapping/dev-mapping_0.1.bb b/meta-app-framework/recipes-config/dev-mapping/dev-mapping_0.1.bb deleted file mode 100644 index befb5443f..000000000 --- a/meta-app-framework/recipes-config/dev-mapping/dev-mapping_0.1.bb +++ /dev/null @@ -1,18 +0,0 @@ -inherit allarch - -SUMMARY = "AGL Device mapping configuration file" -DESCRIPTION = "This provide default dev-mapping.conf file \ - that defines mapping between kernel device and logical name \ - used in low-can binding by example." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -SRC_URI += "file://dev-mapping.conf.default" - -do_install() { - install -d ${D}${sysconfdir} - install -m 0644 ${WORKDIR}/dev-mapping.conf.default ${D}${sysconfdir}/dev-mapping.conf -} diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb index 56f89c598..0201c0e4f 100644 --- a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb +++ b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb @@ -15,5 +15,4 @@ RDEPENDS_${PN} += "\ libafbwsc \ af-main \ systemd-agl-sync \ - ${@bb.utils.contains('DISTRO_FEATURES', 'webruntime', 'virtual/webruntime', '', d)} \ " diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core-security.bbappend b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core-security.bbappend deleted file mode 100644 index a8d04ab6d..000000000 --- a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core-security.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -RDEPENDS_${PN} += "\ - xmlsec1 \ - cynara \ - security-manager \ - security-manager-policy \ - agl-users \ - " - diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-image-minimal.bbappend b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-image-minimal.bbappend deleted file mode 100644 index ad09e5ddf..000000000 --- a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-image-minimal.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -RDEPENDS_${PN} += "\ - packagegroup-agl-app-framework \ - " diff --git a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime deleted file mode 100755 index 80685eb81..000000000 --- a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -exec /usr/bin/qt5/qmlscene "$1" /usr/bin/web-runtime.qml diff --git a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime-webkit.qml b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime-webkit.qml deleted file mode 100644 index d18b672cd..000000000 --- a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime-webkit.qml +++ /dev/null @@ -1,13 +0,0 @@ -import QtQuick 2.1 -import QtQuick.Controls 1.1 -import QtWebKit 3.0 - -ApplicationWindow { - width: 1024 - height: 768 - visible: true - WebView { - url: Qt.application.arguments[1] - anchors.fill: parent - } -} diff --git a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime.qml b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime.qml deleted file mode 100644 index 852567a49..000000000 --- a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime.qml +++ /dev/null @@ -1,14 +0,0 @@ -import QtQuick 2.1 -import QtQuick.Controls 1.1 -import QtWebEngine 1.1 - -ApplicationWindow { - width: 1024 - height: 768 - visible: true - flags: Qt.WindowFullScreen | Qt.FramelessWindowHint - WebEngineView { - url: Qt.application.arguments[1] - anchors.fill: parent - } -} diff --git a/meta-app-framework/recipes-core/web-runtime/web-runtime_0.1.bb b/meta-app-framework/recipes-core/web-runtime/web-runtime_0.1.bb deleted file mode 100644 index 75077b696..000000000 --- a/meta-app-framework/recipes-core/web-runtime/web-runtime_0.1.bb +++ /dev/null @@ -1,42 +0,0 @@ -inherit allarch - -SUMMARY = "Provides the 'web-runtime' command" -DESCRIPTION = "The command 'web-runtime' is an abstraction that allows to " - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -SRC_URI = "\ - file://web-runtime;md5sum=2245be1e6029b30966f0842e3fee75ea \ - file://web-runtime.qml;md5sum=922aeae6d596d7c83af01abca266f0df \ - file://web-runtime-webkit.qml;md5sum=4daf9df39078634c27a7923d37e82e3d \ -" - -RDEPENDS_${PN} = "\ - qtdeclarative-tools \ - qtwayland-qmlplugins \ - qtquickcontrols-qmlplugins \ -" - -PROVIDES += "virtual/webruntime" -# add also RPROVIDES to satisfy the packagegroup -RPROVIDES_${PN} += "virtual/webruntime" - -do_configure() { - : -} - -do_install() { - install -d ${D}${bindir} - install -m 0755 ${WORKDIR}/web-runtime ${D}${bindir}/web-runtime - install -m 0644 ${WORKDIR}/web-runtime.qml ${D}${bindir}/web-runtime.qml - install -m 0644 ${WORKDIR}/web-runtime-webkit.qml ${D}${bindir}/web-runtime-webkit.qml -} - -do_install_append_rcar-gen2() { - # workaround for porter board: force the use of libEGL provided by mesa at runtime - # otherwise, the proprietary libEGL is used and a problem then occurs due to a missing EGL function - sed -i 's|^\(exec /usr/bin/qt5/qmlscene\)|LD_PRELOAD=/usr/lib/libEGL.so \1|g' ${D}${bindir}/web-runtime -} - - diff --git a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend new file mode 100644 index 000000000..a8d04ab6d --- /dev/null +++ b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend @@ -0,0 +1,8 @@ +RDEPENDS_${PN} += "\ + xmlsec1 \ + cynara \ + security-manager \ + security-manager-policy \ + agl-users \ + " + diff --git a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend new file mode 100644 index 000000000..ad09e5ddf --- /dev/null +++ b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend @@ -0,0 +1,3 @@ +RDEPENDS_${PN} += "\ + packagegroup-agl-app-framework \ + " diff --git a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend new file mode 100644 index 000000000..ad09e5ddf --- /dev/null +++ b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend @@ -0,0 +1,3 @@ +RDEPENDS_${PN} += "\ + packagegroup-agl-app-framework \ + " diff --git a/meta-security/conf/layer.conf b/meta-security/conf/layer.conf index db6be54c0..2da233a76 100644 --- a/meta-security/conf/layer.conf +++ b/meta-security/conf/layer.conf @@ -2,9 +2,9 @@ BBPATH =. "${LAYERDIR}:" # We have a packages directory, add to BBFILES -BBFILES := "${BBFILES} \ - ${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" +BBFILES += " ${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend \ + " # Must prioritize our rpm recipe over the default ones. BBFILE_COLLECTIONS += "security-smack" diff --git a/templates/base/bblayers.conf.sample b/templates/base/bblayers.conf.sample index 0c3114f8c..97537f490 100644 --- a/templates/base/bblayers.conf.sample +++ b/templates/base/bblayers.conf.sample @@ -47,20 +47,12 @@ AGL_CORE_DEPENDENCY_LAYERS = " \ ${METADIR}/meta-openembedded/meta-filesystems \ " -# temporary ... to avoid build breakage. To move to upper layers. -AGL_TEMP_GFX_LAYERS = " \ - ${METADIR}/meta-agl/meta-agl-profile-graphical \ - ${METADIR}/meta-agl/meta-agl-profile-demo \ - " - - #################### # Combine the layers BBLAYERS ?= " \ ${AGL_CORE_DEPENDENCY_LAYERS} \ ${AGL_CORE_LAYERS} \ ${AGL_APPFW_LAYERS} \ - ${AGL_TEMP_GFX_LAYERS} \ ${YOCTO_LAYERS} \ " diff --git a/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc new file mode 100644 index 000000000..97b44a21e --- /dev/null +++ b/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc @@ -0,0 +1,3 @@ +BBLAYERS =+ " \ + ${METADIR}/meta-agl/meta-agl-profile-graphical-html5 \ +" diff --git a/templates/feature/agl-profile-graphical-html5/included.dep b/templates/feature/agl-profile-graphical-html5/included.dep new file mode 100644 index 000000000..5b54430da --- /dev/null +++ b/templates/feature/agl-profile-graphical-html5/included.dep @@ -0,0 +1 @@ +agl-profile-graphical \ No newline at end of file diff --git a/templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc new file mode 100644 index 000000000..b0ac5bf14 --- /dev/null +++ b/templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc @@ -0,0 +1,9 @@ +BBLAYERS =+ " \ + ${METADIR}/meta-agl/meta-agl-profile-graphical-qt5 \ +" + +# These are the dependencies +#--------------------------- +BBLAYERS =+ " \ + ${METADIR}/meta-qt5 \ +" diff --git a/templates/feature/agl-profile-graphical-qt5/included.dep b/templates/feature/agl-profile-graphical-qt5/included.dep new file mode 100644 index 000000000..5b54430da --- /dev/null +++ b/templates/feature/agl-profile-graphical-qt5/included.dep @@ -0,0 +1 @@ +agl-profile-graphical \ No newline at end of file diff --git a/templates/feature/agl-profile-graphical/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical/50_bblayers.conf.inc new file mode 100644 index 000000000..44b0885dc --- /dev/null +++ b/templates/feature/agl-profile-graphical/50_bblayers.conf.inc @@ -0,0 +1,3 @@ +BBLAYERS =+ " \ + ${METADIR}/meta-agl/meta-agl-profile-graphical \ +" diff --git a/templates/feature/agl-profile-hud/50_bblayers.conf.inc b/templates/feature/agl-profile-hud/50_bblayers.conf.inc new file mode 100644 index 000000000..047383710 --- /dev/null +++ b/templates/feature/agl-profile-hud/50_bblayers.conf.inc @@ -0,0 +1,3 @@ +BBLAYERS =+ " \ + ${METADIR}/meta-agl/meta-agl-profile-hud \ +" diff --git a/templates/feature/agl-profile-telematics/50_bblayers.conf.inc b/templates/feature/agl-profile-telematics/50_bblayers.conf.inc new file mode 100644 index 000000000..874b438f0 --- /dev/null +++ b/templates/feature/agl-profile-telematics/50_bblayers.conf.inc @@ -0,0 +1,3 @@ +BBLAYERS =+ " \ + ${METADIR}/meta-agl/meta-agl-profile-telematics \ +" -- cgit 1.2.3-korg