Hello community, here is the log from the commit of package chromium for openSUSE:Leap:15.2 checked in at 2020-04-17 13:37:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/chromium (Old) and /work/SRC/openSUSE:Leap:15.2/.chromium.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chromium" Fri Apr 17 13:37:38 2020 rev:103 rq:794006 version:81.0.4044.92 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/chromium/chromium.changes 2020-03-23 07:14:41.318527185 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.chromium.new.2738/chromium.changes 2020-04-17 13:37:53.148235336 +0200 @@ -1,0 +2,85 @@ +Wed Apr 8 08:41:17 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 81.0.4044.92 bsc#1168911: + * CVE-2020-6454: Use after free in extensions + * CVE-2020-6423: Use after free in audio + * CVE-2020-6455: Out of bounds read in WebSQL + * CVE-2020-6430: Type Confusion in V8 + * CVE-2020-6456: Insufficient validation of untrusted input in clipboard + * CVE-2020-6431: Insufficient policy enforcement in full screen + * CVE-2020-6432: Insufficient policy enforcement in navigations + * CVE-2020-6433: Insufficient policy enforcement in extensions + * CVE-2020-6434: Use after free in devtools + * CVE-2020-6435: Insufficient policy enforcement in extensions + * CVE-2020-6436: Use after free in window management + * CVE-2020-6437: Inappropriate implementation in WebView + * CVE-2020-6438: Insufficient policy enforcement in extensions + * CVE-2020-6439: Insufficient policy enforcement in navigations + * CVE-2020-6440: Inappropriate implementation in extensions + * CVE-2020-6441: Insufficient policy enforcement in omnibox + * CVE-2020-6442: Inappropriate implementation in cache + * CVE-2020-6443: Insufficient data validation in developer tools + * CVE-2020-6444: Uninitialized Use in WebRTC + * CVE-2020-6445: Insufficient policy enforcement in trusted types + * CVE-2020-6446: Insufficient policy enforcement in trusted types + * CVE-2020-6447: Inappropriate implementation in developer tools + * CVE-2020-6448: Use after free in V8 +- Add new patches: + * chromium-81-gcc-constexpr.patch + * chromium-81-gcc-noexcept.patch + * fix-vaapi-with-glx.patch +- Remove no longer needed patches: + * chromium-80-gcc-abstract.patch + * chromium-80-gcc-incomplete-type.patch + * chromium-80-gcc-permissive.patch + * chromium-80-include.patch + * chromium-80-unbundle-libxml.patch + * chromium-missing-cstddef-header.patch + * chromium-missing-cstdint-header.patch + * chromium-missing-cstring-header.patch + * chromium-missing-cstring-header2.patch + * chromium-system-icu.patch + * chromium-unbundle-zlib.patch + * webrtc-pulse.patch +- Rebase patches: + * build-with-pipewire-0.3.patch + * chromium-vaapi-fix.patch + * chromium-vaapi.patch + * gpu-timeout.patch + * old-libva.patch + +------------------------------------------------------------------- +Thu Apr 2 09:21:02 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 80.0.3987.162 bsc#1168421: + * CVE-2020-6450: Use after free in WebAudio. + * CVE-2020-6451: Use after free in WebAudio. + * CVE-2020-6452: Heap buffer overflow in media. + +------------------------------------------------------------------- +Sun Mar 29 08:29:41 UTC 2020 - Martin Liška <mli...@suse.cz> + +- Rebase build-with-pipewire-0.3.patch in order to fix + patch collision. + +------------------------------------------------------------------- +Sat Mar 28 18:41:02 UTC 2020 - Martin Liška <mli...@suse.cz> + +- Add chromium-missing-cstdint-header.patch, + chromium-missing-cstring-header.patch, + chromium-missing-cstring-header2.patch and + chromium-missing-cstddef-header.patch in order to fix boo#1167465. + +------------------------------------------------------------------- +Fri Mar 27 11:48:36 UTC 2020 - Stasiek Michalski <stas...@michalski.cc> + +- Use a symbolic icon for GNOME + +------------------------------------------------------------------- +Mon Mar 23 16:49:16 UTC 2020 - Antonio Larrosa <alarr...@suse.com> + +- Add patch to allow building with pipewire 0.3: + * build-with-pipewire-0.3.patch +- Use pipewire in Leap 15.2 + +------------------------------------------------------------------- @@ -4 +89 @@ -- Update to 80.0.3987.149 (bsc#1167090): +- Update to 80.0.3987.149: Old: ---- chromium-80-gcc-abstract.patch chromium-80-gcc-incomplete-type.patch chromium-80-gcc-permissive.patch chromium-80-include.patch chromium-80-unbundle-libxml.patch chromium-80.0.3987.149.tar.xz chromium-system-icu.patch chromium-unbundle-zlib.patch webrtc-pulse.patch New: ---- build-with-pipewire-0.3.patch chromium-81-gcc-constexpr.patch chromium-81-gcc-noexcept.patch chromium-81.0.4044.92.tar.xz chromium-symbolic.svg fix-vaapi-with-glx.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chromium.spec ++++++ --- /var/tmp/diff_new_pack.TSX4yf/_old 2020-04-17 13:38:02.296242219 +0200 +++ /var/tmp/diff_new_pack.TSX4yf/_new 2020-04-17 13:38:02.300242222 +0200 @@ -57,7 +57,7 @@ %bcond_with clang %bcond_with wayland Name: chromium -Version: 80.0.3987.149 +Version: 81.0.4044.92 Release: 0 Summary: Google's open source browser project License: BSD-3-Clause AND LGPL-2.1-or-later @@ -69,6 +69,7 @@ Source101: chromium-browser.desktop Source102: chromium-browser.xml Source103: chromium.default +Source104: chromium-symbolic.svg Patch0: chromium-libusb_interrupt_event_handler.patch # PATCH-FIX-OPENSUSE Make the 1-click-install ymp file always download [bnc#836059] Patch1: exclude_ymp.patch @@ -79,22 +80,18 @@ Patch4: chromium-dma-buf.patch Patch5: chromium-buildname.patch Patch6: chromium-drm.patch -Patch8: chromium-system-icu.patch Patch9: chromium-system-libusb.patch Patch10: gcc-enable-lto.patch -Patch11: chromium-unbundle-zlib.patch -Patch12: chromium-old-glibc-noexcept.patch -Patch13: chromium-79-gcc-alignas.patch -Patch14: chromium-80-gcc-abstract.patch -Patch15: chromium-80-gcc-blink.patch -Patch16: chromium-80-gcc-incomplete-type.patch -Patch17: chromium-80-gcc-permissive.patch -Patch18: chromium-80-gcc-quiche.patch -Patch19: chromium-80-include.patch -Patch20: chromium-80-unbundle-libxml.patch -Patch21: chromium-fix-char_traits.patch -Patch22: gpu-timeout.patch -Patch23: webrtc-pulse.patch +Patch11: chromium-old-glibc-noexcept.patch +Patch12: chromium-79-gcc-alignas.patch +Patch13: chromium-80-gcc-blink.patch +Patch14: chromium-80-gcc-quiche.patch +Patch15: chromium-fix-char_traits.patch +Patch16: gpu-timeout.patch +Patch17: chromium-81-gcc-constexpr.patch +Patch18: chromium-81-gcc-noexcept.patch +Patch19: build-with-pipewire-0.3.patch +Patch20: fix-vaapi-with-glx.patch # Google seem not too keen on merging this but GPU accel is quite important # https://chromium-review.googlesource.com/c/chromium/src/+/532294 # https://github.com/saiarcot895/chromium-ubuntu-build/tree/master/debian/patches @@ -147,6 +144,7 @@ BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(flac++) BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(gtk+-3.0) @@ -187,6 +185,7 @@ BuildRequires: pkgconfig(vdpau) BuildRequires: pkgconfig(vorbis) BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xcb-dri3) BuildRequires: pkgconfig(xcomposite) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xdamage) @@ -220,10 +219,9 @@ # no 32bit supported and it takes ages to build ExcludeArch: %{ix86} %{arm} ppc ppc64 ppc64le s390 s390x %if %{with pipewire} -BuildRequires: pkgconfig(libpipewire-0.2) +BuildRequires: pkgconfig(libpipewire-0.3) %endif %if %{with wayland} -BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(wayland-cursor) BuildRequires: pkgconfig(wayland-scanner) @@ -280,11 +278,6 @@ %setup -q -n %{rname}-%{version} %autopatch -p1 -# unpatch the system zlib on old systems -%if %{with sle_bundles} -%patch11 -p1 -R -%endif - # Fix the path to nodejs binary mkdir -p third_party/node/linux/node-linux-x64/bin ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node @@ -318,6 +311,7 @@ third_party/angle/src/third_party/compiler third_party/angle/src/third_party/libXNVCtrl third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk third_party/angle/third_party/glslang third_party/angle/third_party/spirv-headers third_party/angle/third_party/spirv-tools @@ -362,6 +356,8 @@ third_party/depot_tools/third_party/six third_party/devscripts third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser third_party/devtools-frontend/src/third_party third_party/dom_distiller_js third_party/emoji-segmenter @@ -432,7 +428,6 @@ third_party/qcms third_party/rnnoise third_party/s2cellid - third_party/sfntly third_party/simplejson third_party/skia third_party/skia/third_party/skcms @@ -453,8 +448,6 @@ third_party/unrar third_party/usrsctp third_party/vulkan - third_party/wayland - third_party/wayland-protocols third_party/web-animations-js third_party/webdriver third_party/webrtc @@ -477,6 +470,13 @@ v8/third_party/inspector_protocol v8/third_party/v8/builtins ) +%if %{with wayland} +keeplibs+=( + third_party/mingbm + third_party/wayland + third_party/wayland-protocols +) +%endif %if %{with sle_bundles} keeplibs+=( third_party/libwebp @@ -641,6 +641,7 @@ myconf_gn+=" treat_warnings_as_errors=false" myconf_gn+=" enable_widevine=true" myconf_gn+=" use_dbus=true" +myconf_gn+=" use_system_minigbm=true" # See dependency logic in third_party/BUILD.gn %if %{with system_harfbuzz} myconf_gn+=" use_system_harfbuzz=true" @@ -651,10 +652,11 @@ myconf_gn+=" enable_hevc_demuxing=true" %if %{with pipewire} myconf_gn+=" rtc_use_pipewire=true rtc_link_pipewire=true" +myconf_gn+=" rtc_use_pipewire_version=\"0.3\"" %endif # ozone stuff %if %{with wayland} -myconf_gn+=" use_ozone=true use_xkbcommon=true use_system_minigbm=true use_v4lplugin=true use_v4l2_codec=true use_linux_v4l2_only=true" +myconf_gn+=" use_ozone=true use_xkbcommon=true use_v4lplugin=true use_v4l2_codec=true use_linux_v4l2_only=true" %endif %if %{with clang} myconf_gn+=" is_clang=true clang_base_path=\"/usr\" clang_use_chrome_plugins=false" @@ -757,16 +759,12 @@ cp -a chrome %{buildroot}%{_libdir}/chromium/chromium popd -mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps -cp -a chrome/app/theme/chromium/product_logo_256.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/chromium-browser.png -mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps -cp -a chrome/app/theme/chromium/product_logo_128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/chromium-browser.png -mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps -cp -a chrome/app/theme/chromium/product_logo_64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/chromium-browser.png -mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps -cp -a chrome/app/theme/chromium/product_logo_48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/chromium-browser.png -mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps -cp -a chrome/app/theme/chromium/product_logo_24.png %{buildroot}%{_datadir}/icons/hicolor/24x24/apps/chromium-browser.png +install -Dm 0644 chrome/app/theme/chromium/product_logo_256.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/chromium-browser.png +install -Dm 0644 chrome/app/theme/chromium/product_logo_128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/chromium-browser.png +install -Dm 0644 chrome/app/theme/chromium/product_logo_64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/chromium-browser.png +install -Dm 0644 chrome/app/theme/chromium/product_logo_48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/chromium-browser.png +install -Dm 0644 chrome/app/theme/chromium/product_logo_24.png %{buildroot}%{_datadir}/icons/hicolor/24x24/apps/chromium-browser.png +install -Dm 0644 %{SOURCE104} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/chromium-browser-symbolic.svg mkdir -p %{buildroot}%{_datadir}/applications/ desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE101} ++++++ build-with-pipewire-0.3.patch ++++++ Index: chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/BUILD.gn =================================================================== --- chromium-81.0.4044.83.orig/third_party/webrtc/modules/desktop_capture/BUILD.gn +++ chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/BUILD.gn @@ -196,7 +196,7 @@ if (is_linux) { if (rtc_link_pipewire) { pkg_config("pipewire") { - packages = [ "libpipewire-0.2" ] + packages = [ "libpipewire-${rtc_use_pipewire_version}" ] } } else { # When libpipewire is not directly linked, use stubs to allow for dlopening of Index: chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc =================================================================== --- chromium-81.0.4044.83.orig/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc +++ chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc @@ -14,8 +14,13 @@ #include <glib-object.h> #include <spa/param/format-utils.h> #include <spa/param/props.h> +#if PW_CHECK_VERSION(0, 2, 90) +#include <spa/utils/result.h> +#include <spa/utils/defs.h> +#else #include <spa/param/video/raw-utils.h> #include <spa/support/type-map.h> +#endif #include <memory> #include <utility> @@ -51,6 +56,21 @@ const char kPipeWireLib[] = "libpipewire #endif // static +#if PW_CHECK_VERSION(0, 2, 90) +void BaseCapturerPipeWire::OnCoreError(void* data, + uint32_t id, + int seq, + int res, + const char *message) { + BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data); + RTC_DCHECK(that); + + RTC_LOG(LS_WARNING) << "PipeWire core error: id:" << id << " : " << message; + + if (id == PW_ID_CORE && res == -EPIPE) + RTC_LOG(LS_WARNING) << "PipeWire core error: Pipe closed."; +}; +#else void BaseCapturerPipeWire::OnStateChanged(void* data, pw_remote_state old_state, pw_remote_state state, @@ -64,7 +84,7 @@ void BaseCapturerPipeWire::OnStateChange break; case PW_REMOTE_STATE_CONNECTED: RTC_LOG(LS_INFO) << "PipeWire remote state: connected."; - that->CreateReceivingStream(); + that->pw_stream_ = that->CreateReceivingStream(); break; case PW_REMOTE_STATE_CONNECTING: RTC_LOG(LS_INFO) << "PipeWire remote state: connecting."; @@ -74,6 +94,7 @@ void BaseCapturerPipeWire::OnStateChange break; } } +#endif // static void BaseCapturerPipeWire::OnStreamStateChanged(void* data, @@ -87,12 +108,16 @@ void BaseCapturerPipeWire::OnStreamState case PW_STREAM_STATE_ERROR: RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message; break; +#if !PW_CHECK_VERSION(0, 2, 90) case PW_STREAM_STATE_CONFIGURE: - pw_stream_set_active(that->pw_stream_, true); + pw_stream_set_active(that->pw_stream_, true); // TODO FIXME Removing this might cause problems? break; +#endif case PW_STREAM_STATE_UNCONNECTED: case PW_STREAM_STATE_CONNECTING: +#if !PW_CHECK_VERSION(0, 2, 90) case PW_STREAM_STATE_READY: +#endif case PW_STREAM_STATE_PAUSED: case PW_STREAM_STATE_STREAMING: break; @@ -100,22 +125,39 @@ void BaseCapturerPipeWire::OnStreamState } // static + + +#if PW_CHECK_VERSION(0, 2, 90) +void BaseCapturerPipeWire::OnStreamParamChanged(void* data, + uint32_t id, + const struct spa_pod* format) { +#else void BaseCapturerPipeWire::OnStreamFormatChanged(void* data, const struct spa_pod* format) { +#endif BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data); RTC_DCHECK(that); RTC_LOG(LS_INFO) << "PipeWire stream format changed."; +#if PW_CHECK_VERSION(0, 2, 90) + if (!format || id != SPA_PARAM_Format) + return; +#else if (!format) { pw_stream_finish_format(that->pw_stream_, /*res=*/0, /*params=*/nullptr, /*n_params=*/0); return; } +#endif that->spa_video_format_ = new spa_video_info_raw(); +#if PW_CHECK_VERSION(0, 2, 90) + spa_format_video_raw_parse(format, that->spa_video_format_); +#else spa_format_video_raw_parse(format, that->spa_video_format_, &that->pw_type_->format_video); +#endif auto width = that->spa_video_format_->size.width; auto height = that->spa_video_format_->size.height; @@ -127,6 +169,16 @@ void BaseCapturerPipeWire::OnStreamForma // Setup buffers and meta header for new format. const struct spa_pod* params[2]; +#if PW_CHECK_VERSION(0, 2, 90) + params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_add_object( + &builder, + SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, + SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int (8, 1, 32), + SPA_PARAM_BUFFERS_blocks, SPA_POD_Int (1), + SPA_PARAM_BUFFERS_size, SPA_POD_Int (size), + SPA_PARAM_BUFFERS_stride, SPA_POD_Int (stride), + SPA_PARAM_BUFFERS_align, SPA_POD_Int (16))); +#else params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_object( &builder, // id to enumerate buffer requirements @@ -145,6 +197,19 @@ void BaseCapturerPipeWire::OnStreamForma // Align: memory alignment of the buffer, set as integer (i) to specified // value ":", that->pw_core_type_->param_buffers.align, "i", 16)); +#endif + + + +#if PW_CHECK_VERSION(0, 2, 90) + params[1] = reinterpret_cast<spa_pod*>(spa_pod_builder_add_object( + &builder, + SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, + SPA_PARAM_META_type, SPA_POD_Id (SPA_META_Header), + SPA_PARAM_META_size, SPA_POD_Int (sizeof (struct spa_meta_header)))); + + pw_stream_update_params(that->pw_stream_, params, /*n_params=*/2); +#else params[1] = reinterpret_cast<spa_pod*>(spa_pod_builder_object( &builder, // id to enumerate supported metadata @@ -157,6 +222,7 @@ void BaseCapturerPipeWire::OnStreamForma sizeof(struct spa_meta_header))); pw_stream_finish_format(that->pw_stream_, /*res=*/0, params, /*n_params=*/2); +#endif } // static @@ -183,9 +249,11 @@ BaseCapturerPipeWire::~BaseCapturerPipeW pw_thread_loop_stop(pw_main_loop_); } +#if !PW_CHECK_VERSION(0, 2, 90) if (pw_type_) { delete pw_type_; } +#endif if (spa_video_format_) { delete spa_video_format_; @@ -195,6 +263,16 @@ BaseCapturerPipeWire::~BaseCapturerPipeW pw_stream_destroy(pw_stream_); } + +#if PW_CHECK_VERSION(0, 2, 90) + if (pw_core_) { + pw_core_disconnect(pw_core_); + } + + if (pw_context_) { + pw_context_destroy(pw_context_); + } +#else if (pw_remote_) { pw_remote_destroy(pw_remote_); } @@ -202,14 +280,17 @@ BaseCapturerPipeWire::~BaseCapturerPipeW if (pw_core_) { pw_core_destroy(pw_core_); } +#endif if (pw_main_loop_) { pw_thread_loop_destroy(pw_main_loop_); } +#if !PW_CHECK_VERSION(0, 2, 90) if (pw_loop_) { pw_loop_destroy(pw_loop_); } +#endif if (current_frame_) { free(current_frame_); @@ -284,6 +365,27 @@ void BaseCapturerPipeWire::InitPipeWire( pw_init(/*argc=*/nullptr, /*argc=*/nullptr); +#if PW_CHECK_VERSION(0, 2, 90) + pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr); + + pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), /*properties=*/nullptr, /*user_data_size=*/0); + if (!pw_context_) + { + RTC_LOG(LS_ERROR) << "Failed to create PipeWire context."; + portal_init_failed_ = true; + return; + } + + pw_core_ = pw_context_connect(pw_context_, nullptr, /*user_data_size=*/0); + if (!pw_core_) + { + RTC_LOG(LS_ERROR) << "Failed to connect PipeWire context."; + portal_init_failed_ = true; + return; + } + pw_core_events_.version = PW_VERSION_CORE_EVENTS; + pw_core_events_.error = &OnCoreError; +#else pw_loop_ = pw_loop_new(/*properties=*/nullptr); pw_main_loop_ = pw_thread_loop_new(pw_loop_, "pipewire-main-loop"); @@ -296,15 +398,30 @@ void BaseCapturerPipeWire::InitPipeWire( // Initialize event handlers, remote end and stream-related. pw_remote_events_.version = PW_VERSION_REMOTE_EVENTS; pw_remote_events_.state_changed = &OnStateChanged; +#endif pw_stream_events_.version = PW_VERSION_STREAM_EVENTS; pw_stream_events_.state_changed = &OnStreamStateChanged; +#if PW_CHECK_VERSION(0, 2, 90) + pw_stream_events_.param_changed = &OnStreamParamChanged; +#else pw_stream_events_.format_changed = &OnStreamFormatChanged; +#endif pw_stream_events_.process = &OnStreamProcess; +#if PW_CHECK_VERSION(0, 2, 90) + pw_core_add_listener (pw_core_, + &pw_core_listener_, + &pw_core_events_, + this); + pw_stream_ = CreateReceivingStream (); + if (!pw_stream_) + return; +#else pw_remote_add_listener(pw_remote_, &spa_remote_listener_, &pw_remote_events_, this); pw_remote_connect_fd(pw_remote_, pw_fd_); +#endif if (pw_thread_loop_start(pw_main_loop_) < 0) { RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop"; @@ -314,6 +431,7 @@ void BaseCapturerPipeWire::InitPipeWire( RTC_LOG(LS_INFO) << "PipeWire remote opened."; } +#if !PW_CHECK_VERSION(0, 2, 90) void BaseCapturerPipeWire::InitPipeWireTypes() { spa_type_map* map = pw_core_type_->map; pw_type_ = new PipeWireType(); @@ -323,23 +441,41 @@ void BaseCapturerPipeWire::InitPipeWireT spa_type_format_video_map(map, &pw_type_->format_video); spa_type_video_format_map(map, &pw_type_->video_format); } +#endif -void BaseCapturerPipeWire::CreateReceivingStream() { - spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1}; +pw_stream *BaseCapturerPipeWire::CreateReceivingStream() { + spa_rectangle pwMinScreenBounds = SPA_RECTANGLE(1, 1); spa_rectangle pwScreenBounds = - spa_rectangle{static_cast<uint32_t>(desktop_size_.width()), - static_cast<uint32_t>(desktop_size_.height())}; + SPA_RECTANGLE(static_cast<uint32_t>(desktop_size_.width()), + static_cast<uint32_t>(desktop_size_.height())); + + spa_fraction pwFrameRateMin = SPA_FRACTION(0, 1); + spa_fraction pwFrameRateMax = SPA_FRACTION(60, 1); - spa_fraction pwFrameRateMin = spa_fraction{0, 1}; - spa_fraction pwFrameRateMax = spa_fraction{60, 1}; pw_properties* reuseProps = pw_properties_new_string("pipewire.client.reuse=1"); - pw_stream_ = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps); +#if PW_CHECK_VERSION(0, 2, 90) + pw_stream *stream = pw_stream_new(pw_core_, "webrtc-consume-stream", reuseProps); +#else + pw_stream *stream = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps); +#endif uint8_t buffer[1024] = {}; const spa_pod* params[1]; spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)}; +#if PW_CHECK_VERSION(0, 2, 90) + params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_add_object( + &builder, + // id to enumerate formats + SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat, + SPA_FORMAT_mediaType, SPA_POD_Id (SPA_MEDIA_TYPE_video), + SPA_FORMAT_mediaSubtype, SPA_POD_Id (SPA_MEDIA_SUBTYPE_raw), + SPA_FORMAT_VIDEO_format, SPA_POD_Id (SPA_VIDEO_FORMAT_BGRx), + SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwScreenBounds, &pwMinScreenBounds, &pwScreenBounds), + SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&pwFrameRateMin), + SPA_FORMAT_VIDEO_maxFramerate, SPA_POD_CHOICE_RANGE_Fraction(&pwFrameRateMax, &pwFrameRateMin, &pwFrameRateMax))); +#else params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_object( &builder, // id to enumerate formats @@ -364,19 +500,28 @@ void BaseCapturerPipeWire::CreateReceivi // min and max values and it is undecided (u) to allow negotiation ":", pw_type_->format_video.max_framerate, "Fru", &pwFrameRateMax, 2, &pwFrameRateMin, &pwFrameRateMax)); - - pw_stream_add_listener(pw_stream_, &spa_stream_listener_, &pw_stream_events_, + pw_stream_add_listener(stream, &spa_stream_listener_, &pw_stream_events_, this); +#endif + pw_stream_flags flags = static_cast<pw_stream_flags>( PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE | PW_STREAM_FLAG_MAP_BUFFERS); - if (pw_stream_connect(pw_stream_, PW_DIRECTION_INPUT, /*port_path=*/nullptr, + +#if PW_CHECK_VERSION(0, 2, 90) + if (pw_stream_connect(stream, PW_DIRECTION_INPUT, PW_ID_ANY, + flags, params, + /*n_params=*/1) != 0) { +#else + if (pw_stream_connect(stream, PW_DIRECTION_INPUT, /*port_path=*/nullptr, flags, params, /*n_params=*/1) != 0) { +#endif RTC_LOG(LS_ERROR) << "Could not connect receiving stream."; portal_init_failed_ = true; - return; } + + return stream; } void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) { @@ -404,7 +549,11 @@ void BaseCapturerPipeWire::HandleBuffer( // If both sides decided to go with the RGBx format we need to convert it to // BGRx to match color format expected by WebRTC. +#if PW_CHECK_VERSION(0, 2, 90) + if (spa_video_format_->format == SPA_VIDEO_FORMAT_RGBx) { +#else if (spa_video_format_->format == pw_type_->video_format.RGBx) { +#endif uint8_t* tempFrame = static_cast<uint8_t*>(malloc(maxSize)); std::memcpy(tempFrame, src, maxSize); ConvertRGBxToBGRx(tempFrame, maxSize); Index: chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h =================================================================== --- chromium-81.0.4044.83.orig/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h +++ chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h @@ -22,6 +22,7 @@ namespace webrtc { +#if !PW_CHECK_VERSION(0, 2, 90) class PipeWireType { public: spa_type_media_type media_type; @@ -29,6 +30,7 @@ class PipeWireType { spa_type_format_video format_video; spa_type_video_format video_format; }; +#endif class BaseCapturerPipeWire : public DesktopCapturer { public: @@ -45,6 +47,18 @@ class BaseCapturerPipeWire : public Desk private: // PipeWire types --> +#if PW_CHECK_VERSION(0, 2, 90) + pw_context* pw_context_ = nullptr; + pw_core* pw_core_ = nullptr; + pw_stream* pw_stream_ = nullptr; + pw_thread_loop* pw_main_loop_ = nullptr; + + spa_hook pw_core_listener_ = {}; + spa_hook spa_stream_listener_ = {}; + + pw_core_events pw_core_events_ = {}; + pw_stream_events pw_stream_events_ = {}; +#else pw_core* pw_core_ = nullptr; pw_type* pw_core_type_ = nullptr; pw_stream* pw_stream_ = nullptr; @@ -58,6 +72,7 @@ class BaseCapturerPipeWire : public Desk pw_stream_events pw_stream_events_ = {}; pw_remote_events pw_remote_events_ = {}; +#endif spa_video_info_raw* spa_video_format_ = nullptr; @@ -89,23 +104,38 @@ class BaseCapturerPipeWire : public Desk void InitPortal(); void InitPipeWire(); +#if !PW_CHECK_VERSION(0, 2, 90) void InitPipeWireTypes(); +#endif - void CreateReceivingStream(); + pw_stream *CreateReceivingStream(); void HandleBuffer(pw_buffer* buffer); void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size); +#if PW_CHECK_VERSION(0, 2, 90) + static void OnCoreError(void* data, + uint32_t id, + int seq, + int res, + const char *message); +#else static void OnStateChanged(void* data, pw_remote_state old_state, pw_remote_state state, const char* error); +#endif static void OnStreamStateChanged(void* data, pw_stream_state old_state, pw_stream_state state, const char* error_message); +#if PW_CHECK_VERSION(0, 2, 90) + static void OnStreamParamChanged(void* data, uint32_t id, const struct spa_pod* format); +#else static void OnStreamFormatChanged(void* data, const struct spa_pod* format); +#endif + static void OnStreamProcess(void* data); static void OnNewBuffer(void* data, uint32_t id); Index: chromium-81.0.4044.83/third_party/webrtc/webrtc.gni =================================================================== --- chromium-81.0.4044.83.orig/third_party/webrtc/webrtc.gni +++ chromium-81.0.4044.83/third_party/webrtc/webrtc.gni @@ -114,6 +114,9 @@ declare_args() { # supported Ubuntu and Debian distributions. rtc_use_pipewire = is_desktop_linux && use_sysroot + # Sets the pipewire pkg-config version to use if rtc_use_pipewire is true + rtc_use_pipewire_version = "0.2" + # Set this to link PipeWire directly instead of using the dlopen. rtc_link_pipewire = false ++++++ chromium-81-gcc-constexpr.patch ++++++ diff --git a/ui/views/layout/layout_types.h b/ui/views/layout/layout_types.h index 8f9dbf4..ba118b9 100644 --- a/ui/views/layout/layout_types.h +++ b/ui/views/layout/layout_types.h @@ -45,12 +45,12 @@ class VIEWS_EXPORT SizeBounds { ~SizeBounds() = default; constexpr const base::Optional<int>& width() const { return width_; } - constexpr void set_width(base::Optional<int> width) { + inline void set_width(base::Optional<int> width) { width_ = std::move(width); } constexpr const base::Optional<int>& height() const { return height_; } - constexpr void set_height(base::Optional<int> height) { + inline void set_height(base::Optional<int> height) { height_ = std::move(height); } ++++++ chromium-81-gcc-noexcept.patch ++++++ diff --git a/components/paint_preview/browser/paint_preview_client.cc b/components/paint_preview/browser/paint_preview_client.cc index 38ab6be..dccf07f 100644 --- a/components/paint_preview/browser/paint_preview_client.cc +++ b/components/paint_preview/browser/paint_preview_client.cc @@ -78,7 +78,7 @@ PaintPreviewClient::PaintPreviewData::PaintPreviewData() = default; PaintPreviewClient::PaintPreviewData::~PaintPreviewData() = default; PaintPreviewClient::PaintPreviewData& PaintPreviewClient::PaintPreviewData:: -operator=(PaintPreviewData&& rhs) noexcept = default; +operator=(PaintPreviewData&& rhs) = default; PaintPreviewClient::PaintPreviewData::PaintPreviewData( PaintPreviewData&& other) noexcept = default; ++++++ chromium-80.0.3987.149.tar.xz -> chromium-81.0.4044.92.tar.xz ++++++ /work/SRC/openSUSE:Leap:15.2/chromium/chromium-80.0.3987.149.tar.xz /work/SRC/openSUSE:Leap:15.2/.chromium.new.2738/chromium-81.0.4044.92.tar.xz differ: char 26, line 1 ++++++ chromium-vaapi-fix.patch ++++++ --- /var/tmp/diff_new_pack.TSX4yf/_old 2020-04-17 13:38:02.420242312 +0200 +++ /var/tmp/diff_new_pack.TSX4yf/_new 2020-04-17 13:38:02.420242312 +0200 @@ -2,9 +2,11 @@ author: Maxim Baz origin: chromium-vaapi patches from Arch linux ---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::Assign +Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.cc +=================================================================== +--- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.cc ++++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.cc +@@ -712,6 +712,7 @@ void VaapiVideoDecodeAccelerator::Assign // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's // internal decoded frame. if (buffer_allocation_mode_ != BufferAllocationMode::kNone && @@ -12,17 +14,17 @@ !vpp_vaapi_wrapper_) { vpp_vaapi_wrapper_ = VaapiWrapper::Create( VaapiWrapper::kVideoProcess, VAProfileNone, -@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::Assign - PictureBuffer buffer = buffers[i]; - buffer.set_size(requested_pic_size_); +@@ -743,7 +744,8 @@ void VaapiVideoDecodeAccelerator::Assign + : gfx::Size(); + std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create( - (buffer_allocation_mode_ == BufferAllocationMode::kNone) + ((buffer_allocation_mode_ == BufferAllocationMode::kNone) || + (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau)) ? vaapi_wrapper_ : vpp_vaapi_wrapper_, - make_context_current_cb_, bind_image_cb_, buffer); -@@ -1093,6 +1095,14 @@ VaapiVideoDecodeAccelerator::GetSupporte + make_context_current_cb_, bind_image_cb_, buffer, size_to_bind); +@@ -1199,6 +1201,14 @@ VaapiVideoDecodeAccelerator::GetSupporte VaapiVideoDecodeAccelerator::BufferAllocationMode VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { @@ -37,7 +39,7 @@ // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT // |output_mode_| as well. if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT) -@@ -1105,7 +1115,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe +@@ -1211,7 +1221,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe // depends on the bitstream and sometimes it's not enough to cover the amount // of frames needed by the client pipeline (see b/133733739). // TODO(crbug.com/911754): Enable for VP9 Profile 2. @@ -46,9 +48,11 @@ (profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) { // Add one to the reference frames for the one being currently egressed, and // an extra allocation for both |client_| and |decoder_|, see ---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h -+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h -@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeA +Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.h +=================================================================== +--- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.h ++++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.h +@@ -208,6 +208,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeA // Using |client_|s provided PictureBuffers and as many internally // allocated. kNormal, @@ -56,9 +60,11 @@ }; // Decides the concrete buffer allocation mode, depending on the hardware ---- a/media/gpu/vaapi/vaapi_wrapper.cc -+++ b/media/gpu/vaapi/vaapi_wrapper.cc -@@ -1072,6 +1072,11 @@ VAImplementation VaapiWrapper::GetImplem +Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.cc +=================================================================== +--- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_wrapper.cc ++++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.cc +@@ -1137,6 +1137,11 @@ VAImplementation VaapiWrapper::GetImplem } // static @@ -70,8 +76,10 @@ scoped_refptr<VaapiWrapper> VaapiWrapper::Create( CodecMode mode, VAProfile va_profile, ---- a/media/gpu/vaapi/vaapi_wrapper.h -+++ b/media/gpu/vaapi/vaapi_wrapper.h +Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.h +=================================================================== +--- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_wrapper.h ++++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.h @@ -119,6 +119,9 @@ class MEDIA_GPU_EXPORT VaapiWrapper // Returns the type of the underlying VA-API implementation. static VAImplementation GetImplementationType(); ++++++ chromium-vaapi.patch ++++++ --- /var/tmp/diff_new_pack.TSX4yf/_old 2020-04-17 13:38:02.428242318 +0200 +++ /var/tmp/diff_new_pack.TSX4yf/_new 2020-04-17 13:38:02.432242321 +0200 @@ -1,8 +1,8 @@ -Index: chromium-80.0.3987.87/chrome/browser/about_flags.cc +Index: chromium-81.0.4040.5/chrome/browser/about_flags.cc =================================================================== ---- chromium-80.0.3987.87.orig/chrome/browser/about_flags.cc -+++ chromium-80.0.3987.87/chrome/browser/about_flags.cc -@@ -1865,7 +1865,7 @@ const FeatureEntry kFeatureEntries[] = { +--- chromium-81.0.4040.5.orig/chrome/browser/about_flags.cc ++++ chromium-81.0.4040.5/chrome/browser/about_flags.cc +@@ -1876,7 +1876,7 @@ const FeatureEntry kFeatureEntries[] = { "disable-accelerated-video-decode", flag_descriptions::kAcceleratedVideoDecodeName, flag_descriptions::kAcceleratedVideoDecodeDescription, @@ -11,7 +11,7 @@ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), }, { -@@ -2325,10 +2325,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -2311,10 +2311,10 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, #endif // !defined(OS_ANDROID) #endif // ENABLE_VR @@ -24,11 +24,11 @@ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, #endif // OS_CHROMEOS {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, -Index: chromium-80.0.3987.87/chrome/browser/flag_descriptions.cc +Index: chromium-81.0.4040.5/chrome/browser/flag_descriptions.cc =================================================================== ---- chromium-80.0.3987.87.orig/chrome/browser/flag_descriptions.cc -+++ chromium-80.0.3987.87/chrome/browser/flag_descriptions.cc -@@ -3160,15 +3160,20 @@ const char kMetalDescription[] = +--- chromium-81.0.4040.5.orig/chrome/browser/flag_descriptions.cc ++++ chromium-81.0.4040.5/chrome/browser/flag_descriptions.cc +@@ -3181,15 +3181,20 @@ const char kMetalDescription[] = #endif @@ -51,11 +51,11 @@ const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; const char kAggregatedMlAppRankingDescription[] = -Index: chromium-80.0.3987.87/chrome/browser/flag_descriptions.h +Index: chromium-81.0.4040.5/chrome/browser/flag_descriptions.h =================================================================== ---- chromium-80.0.3987.87.orig/chrome/browser/flag_descriptions.h -+++ chromium-80.0.3987.87/chrome/browser/flag_descriptions.h -@@ -1863,11 +1863,15 @@ extern const char kPermissionPromptPersi +--- chromium-81.0.4040.5.orig/chrome/browser/flag_descriptions.h ++++ chromium-81.0.4040.5/chrome/browser/flag_descriptions.h +@@ -1882,11 +1882,15 @@ extern const char kPermissionPromptPersi // Chrome OS ------------------------------------------------------------------ @@ -72,21 +72,50 @@ extern const char kAggregatedMlAppRankingName[]; extern const char kAggregatedMlAppRankingDescription[]; -Index: chromium-80.0.3987.87/gpu/config/software_rendering_list.json +Index: chromium-81.0.4040.5/gpu/config/software_rendering_list.json =================================================================== ---- chromium-80.0.3987.87.orig/gpu/config/software_rendering_list.json -+++ chromium-80.0.3987.87/gpu/config/software_rendering_list.json -@@ -334,11 +334,12 @@ +--- chromium-81.0.4040.5.orig/gpu/config/software_rendering_list.json ++++ chromium-81.0.4040.5/gpu/config/software_rendering_list.json +@@ -337,7 +337,7 @@ }, { "id": 48, - "description": "Accelerated video decode is unavailable on Linux", + "description": "Accelerated VA-API video decode is not supported on NVIDIA platforms", - "cr_bugs": [137247], + "cr_bugs": [137247, 1032907], "os": { "type": "linux" - }, +@@ -347,6 +347,7 @@ + "machine_model_name": ["Chromecast"] + } + ], + "vendor_id": "0x10de", "features": [ "accelerated_video_decode" ] +Index: beta/media/gpu/test/BUILD.gn +=================================================================== +--- beta.orig/media/gpu/test/BUILD.gn ++++ beta/media/gpu/test/BUILD.gn +@@ -150,7 +150,7 @@ if (use_vaapi || use_v4l2_codec) { + } + } + +-if (is_chromeos) { ++if (is_chromeos || use_vaapi) { + static_library("local_gpu_memory_buffer_manager") { + testonly = true + sources = [ +Index: beta/media/mojo/services/gpu_mojo_media_client.cc +=================================================================== +--- beta.orig/media/mojo/services/gpu_mojo_media_client.cc ++++ beta/media/mojo/services/gpu_mojo_media_client.cc +@@ -157,7 +157,7 @@ GpuMojoMediaClient::GetSupportedVideoDec + supported_config_map[VideoDecoderImplementation::kAlternate] = + *d3d11_supported_configs_; + +-#elif BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION) ++#elif defined(OS_CHROMEOS) && BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION) + if (base::FeatureList::IsEnabled(kChromeosVideoDecoder)) { + if (!cros_supported_configs_) { + cros_supported_configs_ = ++++++ fix-vaapi-with-glx.patch ++++++ commit 5b2ff215473e0526b5b24aeff4ad90d369b21c75 Author: Julien Isorce <julien.iso...@chromium.org> Date: Wed Feb 5 17:59:59 2020 +0000 Fix vaapi with GLX The signature of ui's gl::GLImageGLX has changed a little bit since "mplement GpuMemoryBuffers for EGL and GLX": https://chromium-review.googlesource.com/c/chromium/src/+/1984712 Bug: 1031269 Test: build with use_vaapi=true and run with --use-gl=desktop, see Change-Id: I80b07294b9abdfa8233aaf79f7d9ec4c58117090 https: //chromium.googlesource.com/chromium/src.git/+/refs/heads/master/docs/gpu/vaapi.md#vaapi-on-linux Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2036494 Reviewed-by: Thomas Anderson <thomasander...@chromium.org> Reviewed-by: Miguel Casas <mca...@chromium.org> Commit-Queue: Julien Isorce <julien.iso...@chromium.org> Cr-Commit-Position: refs/heads/master@{#738595} Index: beta/media/gpu/vaapi/vaapi_picture_tfp.cc =================================================================== --- beta.orig/media/gpu/vaapi/vaapi_picture_tfp.cc +++ beta/media/gpu/vaapi/vaapi_picture_tfp.cc @@ -57,7 +57,7 @@ bool VaapiTFPPicture::Initialize() { if (make_context_current_cb_ && !make_context_current_cb_.Run()) return false; - glx_image_ = new gl::GLImageGLX(size_, GL_RGB); + glx_image_ = new gl::GLImageGLX(size_, gfx::BufferFormat::BGRX_8888); if (!glx_image_->Initialize(x_pixmap_)) { // x_pixmap_ will be freed in the destructor. DLOG(ERROR) << "Failed creating a GLX Pixmap for TFP"; ++++++ gpu-timeout.patch ++++++ --- /var/tmp/diff_new_pack.TSX4yf/_old 2020-04-17 13:38:02.464242345 +0200 +++ /var/tmp/diff_new_pack.TSX4yf/_new 2020-04-17 13:38:02.464242345 +0200 @@ -2,9 +2,11 @@ author: Chad MILLER <chad.mil...@canonical.com> bug-debian: http://bugs.debian.org/781940 ---- a/gpu/ipc/service/gpu_watchdog_thread.cc -+++ b/gpu/ipc/service/gpu_watchdog_thread.cc -@@ -37,7 +37,7 @@ const int kGpuTimeout = 30000; +Index: chromium-81.0.4040.5/gpu/ipc/service/gpu_watchdog_thread.cc +=================================================================== +--- chromium-81.0.4040.5.orig/gpu/ipc/service/gpu_watchdog_thread.cc ++++ chromium-81.0.4040.5/gpu/ipc/service/gpu_watchdog_thread.cc +@@ -39,7 +39,7 @@ const int kGpuTimeout = 30000; // hangs at context creation during startup. See https://crbug.com/918490. const int kGpuTimeout = 15000; #else @@ -12,4 +14,4 @@ +const int kGpuTimeout = 20000; #endif - #if defined(USE_X11) + // The same set of timeouts from Watchdog V2 so we can compare the results ++++++ old-libva.patch ++++++ --- /var/tmp/diff_new_pack.TSX4yf/_old 2020-04-17 13:38:02.484242360 +0200 +++ /var/tmp/diff_new_pack.TSX4yf/_new 2020-04-17 13:38:02.484242360 +0200 @@ -1,7 +1,7 @@ -Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc +Index: chromium-81.0.4040.5/media/gpu/vaapi/vaapi_wrapper.cc =================================================================== ---- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_wrapper.cc -+++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc +--- chromium-81.0.4040.5.orig/media/gpu/vaapi/vaapi_wrapper.cc ++++ chromium-81.0.4040.5/media/gpu/vaapi/vaapi_wrapper.cc @@ -65,6 +65,10 @@ #include "ui/ozone/public/surface_factory_ozone.h" #endif @@ -13,7 +13,7 @@ using media_gpu_vaapi::kModuleVa; using media_gpu_vaapi::kModuleVa_drm; #if defined(USE_X11) -@@ -367,10 +371,6 @@ bool VADisplayState::Initialize() { +@@ -369,10 +373,6 @@ bool VADisplayState::Initialize() { } bool VADisplayState::InitializeOnce() { @@ -24,7 +24,7 @@ switch (gl::GetGLImplementation()) { case gl::kGLImplementationEGLGLES2: va_display_ = vaGetDisplayDRM(drm_fd_.get()); -@@ -1502,7 +1502,7 @@ VaapiWrapper::ExportVASurfaceAsNativePix +@@ -1508,7 +1508,7 @@ VaapiWrapper::ExportVASurfaceAsNativePix LOG(ERROR) << "Cannot export an invalid surface"; return nullptr; } @@ -33,7 +33,7 @@ VADRMPRIMESurfaceDescriptor descriptor; { base::AutoLock auto_lock(*va_lock_); -@@ -1595,6 +1595,10 @@ VaapiWrapper::ExportVASurfaceAsNativePix +@@ -1601,6 +1601,10 @@ VaapiWrapper::ExportVASurfaceAsNativePix exported_pixmap->pixmap = base::MakeRefCounted<gfx::NativePixmapDmaBuf>( scoped_va_surface.size(), buffer_format, std::move(handle)); return exported_pixmap; @@ -44,10 +44,10 @@ } bool VaapiWrapper::SyncSurface(VASurfaceID va_surface_id) { -Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_jpeg_decoder.cc +Index: chromium-81.0.4040.5/media/gpu/vaapi/vaapi_jpeg_decoder.cc =================================================================== ---- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_jpeg_decoder.cc -+++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_jpeg_decoder.cc +--- chromium-81.0.4040.5.orig/media/gpu/vaapi/vaapi_jpeg_decoder.cc ++++ chromium-81.0.4040.5/media/gpu/vaapi/vaapi_jpeg_decoder.cc @@ -20,6 +20,10 @@ #include "media/parsers/jpeg_parser.h" #include "ui/gfx/geometry/size.h" @@ -59,10 +59,10 @@ namespace media { namespace { -Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc +Index: chromium-81.0.4040.5/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc =================================================================== ---- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc -+++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc +--- chromium-81.0.4040.5.orig/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc ++++ chromium-81.0.4040.5/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc @@ -44,6 +44,10 @@ #include "ui/gfx/geometry/size.h" #include "ui/gfx/gpu_memory_buffer.h" @@ -74,11 +74,11 @@ namespace media { namespace { -Index: chromium-79.0.3945.36/media/gpu/chromeos/fourcc.cc +Index: chromium-81.0.4040.5/media/gpu/chromeos/fourcc.cc =================================================================== ---- chromium-79.0.3945.36.orig/media/gpu/chromeos/fourcc.cc -+++ chromium-79.0.3945.36/media/gpu/chromeos/fourcc.cc -@@ -15,6 +15,13 @@ +--- chromium-81.0.4040.5.orig/media/gpu/chromeos/fourcc.cc ++++ chromium-81.0.4040.5/media/gpu/chromeos/fourcc.cc +@@ -16,6 +16,13 @@ #include <va/va.h> #endif // BUILDFLAG(USE_VAAPI) @@ -91,4 +91,4 @@ + namespace media { - Fourcc::Fourcc() : value_(Fourcc::INVALID) {} + Fourcc::Fourcc(Fourcc::Value fourcc) : value_(fourcc) {}