commit krfb for openSUSE:Factory
Hello community, here is the log from the commit of package krfb for openSUSE:Factory checked in at 2020-04-29 20:49:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/krfb (Old) and /work/SRC/openSUSE:Factory/.krfb.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "krfb" Wed Apr 29 20:49:46 2020 rev:90 rq:796990 version:20.04.0 Changes: -------- --- /work/SRC/openSUSE:Factory/krfb/krfb.changes 2020-03-12 23:05:48.659170079 +0100 +++ /work/SRC/openSUSE:Factory/.krfb.new.2738/krfb.changes 2020-04-29 20:50:41.432765353 +0200 @@ -1,0 +2,32 @@ +Thu Apr 23 12:22:49 UTC 2020 - Luca Beltrame <lbeltrame@kde.org> + +- Update to 20.04.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/releases/2020-04-apps-update +- No code change since 20.03.90 + +------------------------------------------------------------------- +Sun Apr 5 20:30:24 UTC 2020 - Luca Beltrame <lbeltrame@kde.org> + +- Update to 20.03.90 + * New feature release + * For more details please see: + * https://kde.org/announcements/releases/20.04-rc +- No code change since 20.03.80 + +------------------------------------------------------------------- +Sun Mar 22 09:17:20 UTC 2020 - Luca Beltrame <lbeltrame@kde.org> + +- Update to 20.03.80 + * New feature release + * For more details please see: + * https://kde.org/announcements/releases/20.04-beta +- Changes since 19.12.3: + * appdata: remove duplicate <releases> + * unbreak appdata + * PW framebuffer: support upcoming PipeWire 0.3 + * Use URLs with transport encryption +- Drop checks for obsolete distribution versions + +------------------------------------------------------------------- Old: ---- krfb-19.12.3.tar.xz krfb-19.12.3.tar.xz.sig New: ---- krfb-20.04.0.tar.xz krfb-20.04.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ krfb.spec ++++++ --- /var/tmp/diff_new_pack.yx1TN5/_old 2020-04-29 20:50:42.296767332 +0200 +++ /var/tmp/diff_new_pack.yx1TN5/_new 2020-04-29 20:50:42.296767332 +0200 @@ -21,16 +21,12 @@ %{!?_kapp_version: %define _kapp_version %(echo %{version}| awk -F. '{print $1"."$2}')} %bcond_without lang Name: krfb -Version: 19.12.3 +Version: 20.04.0 Release: 0 Summary: Screen sharing using the VNC/RFB protocol License: GPL-2.0-or-later Group: Productivity/Networking/Other Source: https://download.kde.org/stable/release-service/%{version}/src/%{name}-%{version}.tar.xz -%if %{with lang} -Source1: https://download.kde.org/stable/release-service/%{version}/src/%{name}-%{version}.tar.xz.sig -Source2: applications.keyring -%endif BuildRequires: LibVNCServer-devel BuildRequires: extra-cmake-modules BuildRequires: pipewire-devel @@ -59,45 +55,26 @@ BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(xtst) -# Needed for 42.3 -%if 0%{?suse_version} < 1330 -# It does not build with the default compiler (GCC 4.8) on Leap 42.x -%if 0%{?sle_version} < 120300 -BuildRequires: gcc6-c++ -%else -BuildRequires: gcc7-c++ -%endif -%endif %if %{with lang} -Recommends: %{name}-lang +Source1: https://download.kde.org/stable/release-service/%{version}/src/%{name}-%{version}.tar.xz.sig +Source2: applications.keyring %endif +Recommends: %{name}-lang %description VNC-compatible server to share KDE desktops. -%if %{with lang} %lang_package -%endif %prep %setup -q %build -%if 0%{?suse_version} < 1330 - # It does not build with the default compiler (GCC 4.8) on Leap 42.x - %if 0%{?sle_version} < 120300 - export CC=gcc-6 - export CXX=g++-6 - %else - export CC=gcc-7 - export CXX=g++-7 - %endif -%endif %ifarch ppc ppc64 export RPM_OPT_FLAGS="%{optflags} -mminimal-toc" %endif %cmake_kf5 -d build -- -DBUILD_EXPERIMENTAL_TUBES_SUPPORT="on" - make %{?_smp_mflags} + %cmake_build %install %make_install -C build ++++++ krfb-19.12.3.tar.xz -> krfb-20.04.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/CMakeLists.txt new/krfb-20.04.0/CMakeLists.txt --- old/krfb-19.12.3/CMakeLists.txt 2020-03-03 01:29:39.000000000 +0100 +++ new/krfb-20.04.0/CMakeLists.txt 2020-04-17 02:36:39.000000000 +0200 @@ -1,12 +1,12 @@ cmake_minimum_required(VERSION 3.0) # KDE Application Version, managed by release script -set (KDE_APPLICATIONS_VERSION_MAJOR "19") -set (KDE_APPLICATIONS_VERSION_MINOR "12") -set (KDE_APPLICATIONS_VERSION_MICRO "3") -set (KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}") +set (RELEASE_SERVICE_VERSION_MAJOR "20") +set (RELEASE_SERVICE_VERSION_MINOR "04") +set (RELEASE_SERVICE_VERSION_MICRO "0") +set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") -project(krfb VERSION ${KDE_APPLICATIONS_VERSION}) +project(krfb VERSION ${RELEASE_SERVICE_VERSION}) set(QT_MIN_VERSION 5.6.0) set(KF5_MIN_VERSION 5.31.0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/cmake/modules/FindPipeWire.cmake new/krfb-20.04.0/cmake/modules/FindPipeWire.cmake --- old/krfb-19.12.3/cmake/modules/FindPipeWire.cmake 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/cmake/modules/FindPipeWire.cmake 2020-04-15 11:22:14.000000000 +0200 @@ -32,7 +32,7 @@ #============================================================================= # Copyright 2014 Alex Merry <alex.merry@kde.org> # Copyright 2014 Martin Gräßlin <mgraesslin@kde.org> -# Copyright 2018 Jan Grulich <jgrulich@redhat.com> +# Copyright 2018-2020 Jan Grulich <jgrulich@redhat.com> # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -61,9 +61,11 @@ # Use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls find_package(PkgConfig QUIET) -pkg_check_modules(PKG_PipeWire QUIET libpipewire-0.2 libpipewire-0.3) -set(PipeWire_DEFINITIONS "${PKG_PipeWire_CFLAGS_OTHER}") +pkg_search_module(PKG_PipeWire QUIET libpipewire-0.3 libpipewire-0.2) +pkg_search_module(PKG_Spa QUIET libspa-0.2 libspa-0.1) + +set(PipeWire_DEFINITIONS "${PKG_PipeWire_CFLAGS}" "${PKG_Spa_CFLAGS}") set(PipeWire_VERSION "${PKG_PipeWire_VERSION}") find_path(PipeWire_INCLUDE_DIRS @@ -71,13 +73,23 @@ pipewire/pipewire.h HINTS ${PKG_PipeWire_INCLUDE_DIRS} + ${PKG_PipeWire_INCLUDE_DIRS}/pipewire-0.3 +) + +find_path(Spa_INCLUDE_DIRS + NAMES + spa/param/props.h + HINTS + ${PKG_Spa_INCLUDE_DIRS} + ${PKG_Spa_INCLUDE_DIRS}/spa-0.2 ) find_library(PipeWire_LIBRARIES NAMES - pipewire-0.2 pipewire-0.3 + pipewire-0.3 + pipewire-0.2 HINTS - ${PKG_PipeWire_LIBRARIES_DIRS} + ${PKG_PipeWire_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) @@ -87,6 +99,7 @@ REQUIRED_VARS PipeWire_LIBRARIES PipeWire_INCLUDE_DIRS + Spa_INCLUDE_DIRS VERSION_VAR PipeWire_VERSION ) @@ -96,7 +109,7 @@ set_target_properties(PipeWire::PipeWire PROPERTIES IMPORTED_LOCATION "${PipeWire_LIBRARIES}" INTERFACE_COMPILE_OPTIONS "${PipeWire_DEFINITIONS}" - INTERFACE_INCLUDE_DIRECTORIES "${PipeWire_INCLUDE_DIRS}" + INTERFACE_INCLUDE_DIRECTORIES "${PipeWire_INCLUDE_DIRS};${Spa_INCLUDE_DIRS}" ) endif() @@ -104,6 +117,6 @@ include(FeatureSummary) set_package_properties(PipeWire PROPERTIES - URL "http://www.pipewire.org" + URL "https://www.pipewire.org" DESCRIPTION "PipeWire - multimedia processing" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/events/x11/krfb_events_x11.desktop new/krfb-20.04.0/events/x11/krfb_events_x11.desktop --- old/krfb-19.12.3/events/x11/krfb_events_x11.desktop 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/events/x11/krfb_events_x11.desktop 2020-04-15 11:22:14.000000000 +0200 @@ -56,6 +56,6 @@ X-KDE-Library=krfb_events_x11 X-KDE-PluginInfo-Name=x11 X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://www.kde.org +X-KDE-PluginInfo-Website=https://www.kde.org X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/events/x11/krfb_events_x11.json new/krfb-20.04.0/events/x11/krfb_events_x11.json --- old/krfb-19.12.3/events/x11/krfb_events_x11.json 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/events/x11/krfb_events_x11.json 2020-04-15 11:22:14.000000000 +0200 @@ -41,7 +41,6 @@ "Name[fi]": "KRfb:n X11-tapahtumakäsittelijä", "Name[fr]": "Gestionnaire d'évènements X11 pour KRfb", "Name[gl]": "Xestor de eventos de X11 para KRfb", - "Name[ia]": "Gerente de evento de X11 per KRfb", "Name[it]": "Gestore eventi X11 per KRfb", "Name[ko]": "KRfb X11 이벤트 핸들러", "Name[nl]": "Op X11 behandelaar van gebeurtenis voor KRfb", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/events/xdp/krfb_events_xdp.desktop new/krfb-20.04.0/events/xdp/krfb_events_xdp.desktop --- old/krfb-19.12.3/events/xdp/krfb_events_xdp.desktop 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/events/xdp/krfb_events_xdp.desktop 2020-04-15 11:22:14.000000000 +0200 @@ -56,7 +56,7 @@ X-KDE-Library=krfb_events_xdp X-KDE-PluginInfo-Name=xdp X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://www.kde.org +X-KDE-PluginInfo-Website=https://www.kde.org X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/framebuffers/pipewire/krfb_framebuffer_pw.json new/krfb-20.04.0/framebuffers/pipewire/krfb_framebuffer_pw.json --- old/krfb-19.12.3/framebuffers/pipewire/krfb_framebuffer_pw.json 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/framebuffers/pipewire/krfb_framebuffer_pw.json 2020-04-15 11:22:14.000000000 +0200 @@ -14,7 +14,6 @@ "Description[fi]": "KRfb:n PipeWire-pohjainen kehyspuskuri.", "Description[fr]": "Tampon d'images utilisant PipeWire pour KRfb.", "Description[gl]": "Búfer de fotograma para KRfb baseado en PipeWire.", - "Description[ia]": "Framebuffer basate sur PipeWire per KRfb", "Description[it]": "Framebuffer basato su PipeWire per KRfb.", "Description[ko]": "KRfb용 PipeWire 기반 프레임버퍼입니다.", "Description[nl]": "Op PipeWire gebaseerd framebuffer voor KRfb.", @@ -45,7 +44,6 @@ "Name[fi]": "KRfb:n PipeWire-kehyspuskuri", "Name[fr]": "Tampon d'images PipeWire pour KRfb", "Name[gl]": "Búfer de fotograma de PipeWire para KRfb", - "Name[ia]": "Framebuffer basate sur PipeWire per KRfb", "Name[it]": "Framebuffer PipeWire per KRfb", "Name[ko]": "KRfb용 PipeWire 프레임버퍼", "Name[nl]": "PipeWire-framebuffer voor KRfb", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/framebuffers/pipewire/pw_framebuffer.cpp new/krfb-20.04.0/framebuffers/pipewire/pw_framebuffer.cpp --- old/krfb-19.12.3/framebuffers/pipewire/pw_framebuffer.cpp 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/framebuffers/pipewire/pw_framebuffer.cpp 2020-04-15 11:22:14.000000000 +0200 @@ -26,19 +26,15 @@ // pipewire #include <pipewire/version.h> -#if !PW_CHECK_VERSION(0, 2, 9) -#include <spa/support/type-map.h> -#include <spa/param/format-utils.h> -#include <spa/param/video/format-utils.h> -#include <spa/param/video/raw-utils.h> +#if PW_CHECK_VERSION(0, 2, 90) +#include <spa/utils/result.h> #endif + +#include <spa/param/format-utils.h> #include <spa/param/video/format-utils.h> #include <spa/param/props.h> -#include <pipewire/factory.h> #include <pipewire/pipewire.h> -#include <pipewire/remote.h> -#include <pipewire/stream.h> #include <limits.h> @@ -71,7 +67,7 @@ return arg; } -#if !PW_CHECK_VERSION(0, 2, 9) +#if !PW_CHECK_VERSION(0, 2, 90) /** * @brief The PwType class - helper class to contain pointers to raw C pipewire media mappings */ @@ -96,14 +92,19 @@ private: friend class PWFrameBuffer; +#if PW_CHECK_VERSION(0, 2, 90) + static void onCoreError(void *data, uint32_t id, int seq, int res, const char *message); + static void onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format); +#else static void onStateChanged(void *data, pw_remote_state old, pw_remote_state state, const char *error); - static void onStreamStateChanged(void *data, pw_stream_state old, pw_stream_state state, const char *error_message); static void onStreamFormatChanged(void *data, const struct spa_pod *format); +#endif + static void onStreamStateChanged(void *data, pw_stream_state old, pw_stream_state state, const char *error_message); static void onStreamProcess(void *data); void initDbus(); void initPw(); -#if !PW_CHECK_VERSION(0, 2, 9) +#if !PW_CHECK_VERSION(0, 2, 90) void initializePwTypes(); #endif @@ -114,40 +115,45 @@ void handleRemoteDesktopStarted(quint32 &code, QVariantMap &results); // pw handling - void createReceivingStream(); + pw_stream *createReceivingStream(); void handleFrame(pw_buffer *pwBuffer); // link to public interface PWFrameBuffer *q; // pipewire stuff -#if PW_CHECK_VERSION(0, 2, 9) +#if PW_CHECK_VERSION(0, 2, 90) + struct pw_context *pwContext = nullptr; struct pw_core *pwCore = nullptr; - struct pw_loop *pwLoop = nullptr; struct pw_stream *pwStream = nullptr; - struct pw_remote *pwRemote = nullptr; struct pw_thread_loop *pwMainLoop = nullptr; + + // wayland-like listeners + // ...of events that happen in pipewire server + spa_hook coreListener = {}; + spa_hook streamListener = {}; + + // event handlers + pw_core_events pwCoreEvents = {}; + pw_stream_events pwStreamEvents = {}; #else pw_core *pwCore = nullptr; pw_loop *pwLoop = nullptr; + pw_thread_loop *pwMainLoop = nullptr; pw_stream *pwStream = nullptr; pw_remote *pwRemote = nullptr; - pw_thread_loop *pwMainLoop = nullptr; pw_type *pwCoreType = nullptr; PwType *pwType = nullptr; -#endif - uint pwStreamNodeId = 0; + spa_hook remoteListener = {}; + spa_hook streamListener = {}; // event handlers pw_remote_events pwRemoteEvents = {}; pw_stream_events pwStreamEvents = {}; +#endif - // wayland-like listeners - // ...of events that happen in pipewire server - spa_hook remoteListener = {}; - // ...of events that happen with the stream we consume - spa_hook streamListener = {}; + uint pwStreamNodeId = 0; // negotiated video format spa_video_info_raw *videoFormat = nullptr; @@ -177,6 +183,15 @@ PWFrameBuffer::Private::Private(PWFrameBuffer *q) : q(q) { +#if PW_CHECK_VERSION(0, 2, 90) + pwCoreEvents.version = PW_VERSION_CORE_EVENTS; + pwCoreEvents.error = &onCoreError; + + pwStreamEvents.version = PW_VERSION_STREAM_EVENTS; + pwStreamEvents.state_changed = &onStreamStateChanged; + pwStreamEvents.param_changed = &onStreamParamChanged; + pwStreamEvents.process = &onStreamProcess; +#else // initialize event handlers, remote end and stream-related pwRemoteEvents.version = PW_VERSION_REMOTE_EVENTS; pwRemoteEvents.state_changed = &onStateChanged; @@ -185,6 +200,7 @@ pwStreamEvents.state_changed = &onStreamStateChanged; pwStreamEvents.format_changed = &onStreamFormatChanged; pwStreamEvents.process = &onStreamProcess; +#endif } /** @@ -443,25 +459,43 @@ // init pipewire (required) pw_init(nullptr, nullptr); // args are not used anyways +#if PW_CHECK_VERSION(0, 2, 90) + pwMainLoop = pw_thread_loop_new("pipewire-main-loop", nullptr); + pwContext = pw_context_new(pw_thread_loop_get_loop(pwMainLoop), nullptr, 0); + if (!pwContext) { + qWarning() << "Failed to create PipeWire context"; + return; + } + + pwCore = pw_context_connect(pwContext, nullptr, 0); + if (!pwCore) { + qWarning() << "Failed to connect PipeWire context"; + return; + } + + pw_core_add_listener(pwCore, &coreListener, &pwCoreEvents, this); + + pwStream = createReceivingStream(); + if (!pwStream) { + qWarning() << "Failed to create PipeWire stream"; + return; + } +#else // initialize our source pwLoop = pw_loop_new(nullptr); pwMainLoop = pw_thread_loop_new(pwLoop, "pipewire-main-loop"); - // create PipeWire core object (required) pwCore = pw_core_new(pwLoop, nullptr); -#if !PW_CHECK_VERSION(0, 2, 9) pwCoreType = pw_core_get_type(pwCore); - // init type maps initializePwTypes(); -#endif // pw_remote should be initialized before type maps or connection error will happen pwRemote = pw_remote_new(pwCore, nullptr, 0); - // init PipeWire remote, add listener to handle events pw_remote_add_listener(pwRemote, &remoteListener, &pwRemoteEvents, this); pw_remote_connect_fd(pwRemote, pipewireFd.fileDescriptor()); +#endif if (pw_thread_loop_start(pwMainLoop) < 0) { qWarning() << "Failed to start main PipeWire loop"; @@ -487,6 +521,18 @@ } #endif + +#if PW_CHECK_VERSION(0, 2, 90) +void PWFrameBuffer::Private::onCoreError(void *data, uint32_t id, int seq, int res, const char *message) +{ + Q_UNUSED(data); + Q_UNUSED(id); + Q_UNUSED(seq); + Q_UNUSED(res); + + qInfo() << "core error: " << message; +} +#else /** * @brief PWFrameBuffer::Private::onStateChanged - global state tracking for pipewire connection * @param data pointer that you have set in pw_remote_add_listener call's last argument @@ -504,13 +550,14 @@ qWarning() << "remote error: " << error; break; case PW_REMOTE_STATE_CONNECTED: - d->createReceivingStream(); + d->pwStream = d->createReceivingStream(); break; default: qInfo() << "remote state: " << pw_remote_state_as_string(state); break; } } +#endif /** * @brief PWFrameBuffer::Private::onStreamStateChanged - called whenever stream state changes on pipewire server @@ -524,6 +571,20 @@ auto *d = static_cast<PWFrameBuffer::Private *>(data); +#if PW_CHECK_VERSION(0, 2, 90) + switch (state) { + case PW_STREAM_STATE_ERROR: + qWarning() << "pipewire stream error: " << error_message; + break; + case PW_STREAM_STATE_PAUSED: + pw_stream_set_active(d->pwStream, true); + break; + case PW_STREAM_STATE_STREAMING: + case PW_STREAM_STATE_UNCONNECTED: + case PW_STREAM_STATE_CONNECTING: + break; + } +#else switch (state) { case PW_STREAM_STATE_ERROR: qWarning() << "pipewire stream error: " << error_message; @@ -534,6 +595,7 @@ default: break; } +#endif } /** @@ -542,24 +604,28 @@ * @param data pointer that you have set in pw_stream_add_listener call's last argument * @param format format that's being proposed */ -#if defined(PW_API_PRE_0_2_0) -void PWFrameBuffer::Private::onStreamFormatChanged(void *data, struct spa_pod *format) +#if PW_CHECK_VERSION(0, 2, 90) +void PWFrameBuffer::Private::onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format) #else void PWFrameBuffer::Private::onStreamFormatChanged(void *data, const struct spa_pod *format) -#endif // defined(PW_API_PRE_0_2_0) +#endif { qInfo() << "Stream format changed"; auto *d = static_cast<PWFrameBuffer::Private *>(data); const int bpp = 4; +#if PW_CHECK_VERSION(0, 2, 90) + if (!format || id != SPA_PARAM_Format) { +#else if (!format) { pw_stream_finish_format(d->pwStream, 0, nullptr, 0); +#endif return; } d->videoFormat = new spa_video_info_raw(); -#if PW_CHECK_VERSION(0, 2, 9) +#if PW_CHECK_VERSION(0, 2, 90) spa_format_video_raw_parse(format, d->videoFormat); #else spa_format_video_raw_parse(format, d->videoFormat, &d->pwType->format_video); @@ -575,17 +641,19 @@ // setup buffers and meta header for new format const struct spa_pod *params[2]; -#if PW_CHECK_VERSION(0, 2, 9) +#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_size, "i", size, - ":", SPA_PARAM_BUFFERS_stride, "i", stride, - ":", SPA_PARAM_BUFFERS_buffers, "?ri", SPA_CHOICE_RANGE(8, 1, 32), - ":", SPA_PARAM_BUFFERS_align, "i", 16)); + SPA_PARAM_BUFFERS_size, SPA_POD_Int(size), + SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride), + SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(8, 1, 32), + SPA_PARAM_BUFFERS_blocks, SPA_POD_Int(1), + SPA_PARAM_BUFFERS_align, SPA_POD_Int(16))); params[1] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder, SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, - ":", SPA_PARAM_META_type, "I", SPA_META_Header, - ":", SPA_PARAM_META_size, "i", sizeof(struct spa_meta_header))); + 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(d->pwStream, params, 2); #else params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_object(&builder, d->pwCoreType->param.idBuffers, d->pwCoreType->param_buffers.Buffers, @@ -597,9 +665,8 @@ d->pwCoreType->param.idMeta, d->pwCoreType->param_meta.Meta, ":", d->pwCoreType->param_meta.type, "I", d->pwCoreType->meta.Header, ":", d->pwCoreType->param_meta.size, "i", sizeof(struct spa_meta_header))); -#endif - pw_stream_finish_format(d->pwStream, 0, params, 2); +#endif } /** @@ -647,7 +714,7 @@ * and copy the framebuffer to the existing image that we track. The state of the stream and configuration * are later handled by the corresponding listener. */ -void PWFrameBuffer::Private::createReceivingStream() +pw_stream *PWFrameBuffer::Private::createReceivingStream() { spa_rectangle pwMinScreenBounds = SPA_RECTANGLE(1, 1); spa_rectangle pwMaxScreenBounds = SPA_RECTANGLE(screenGeometry.width, screenGeometry.height); @@ -655,22 +722,31 @@ spa_fraction pwFramerateMin = SPA_FRACTION(0, 1); spa_fraction pwFramerateMax = SPA_FRACTION(60, 1); - auto reuseProps = pw_properties_new("pipewire.client.reuse", "1", nullptr); // null marks end of varargs - pwStream = pw_stream_new(pwRemote, "krfb-fb-consume-stream", reuseProps); +#if PW_CHECK_VERSION(0, 2, 90) + auto stream = pw_stream_new_simple(pw_thread_loop_get_loop(pwMainLoop), "krfb-fb-consume-stream", + pw_properties_new(PW_KEY_MEDIA_TYPE, "Video", + PW_KEY_MEDIA_CATEGORY, "Capture", + PW_KEY_MEDIA_ROLE, "Screen", + nullptr), + &pwStreamEvents, this); +#else + auto reuseProps = pw_properties_new("pipewire.client.reuse", "1", nullptr); // null marks end of varargs + auto stream = pw_stream_new(pwRemote, "krfb-fb-consume-stream", reuseProps); +#endif uint8_t buffer[1024] = {}; const spa_pod *params[1]; auto builder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer)); -#if PW_CHECK_VERSION(0, 2, 9) +#if PW_CHECK_VERSION(0, 2, 90) params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat, - ":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_video, - ":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw, - ":", SPA_FORMAT_VIDEO_format, "I", SPA_VIDEO_FORMAT_RGBx, - ":", SPA_FORMAT_VIDEO_size, "?rR", SPA_CHOICE_RANGE(&pwMaxScreenBounds, &pwMinScreenBounds, &pwMaxScreenBounds), - ":", SPA_FORMAT_VIDEO_framerate, "F", &pwFramerateMin, - ":", SPA_FORMAT_VIDEO_maxFramerate, "?rF", SPA_CHOICE_RANGE(&pwFramerateMax, &pwFramerateMin, &pwFramerateMax))); + 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_RGBx), + SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwMaxScreenBounds, &pwMinScreenBounds, &pwMaxScreenBounds), + 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, pwCoreType->param.idEnumFormat, pwCoreType->spa_format, @@ -680,18 +756,20 @@ ":", pwType->format_video.size, "Rru", &pwMaxScreenBounds, SPA_POD_PROP_MIN_MAX(&pwMinScreenBounds, &pwMaxScreenBounds), ":", pwType->format_video.framerate, "F", &pwFramerateMin, ":", pwType->format_video.max_framerate, "Fru", &pwFramerateMax, 2, &pwFramerateMin, &pwFramerateMax)); + pw_stream_add_listener(stream, &streamListener, &pwStreamEvents, this); #endif - pw_stream_add_listener(pwStream, &streamListener, &pwStreamEvents, this); auto flags = static_cast<pw_stream_flags>(PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE | PW_STREAM_FLAG_MAP_BUFFERS); -#if PW_CHECK_VERSION(0, 2, 9) - if (pw_stream_connect(pwStream, PW_DIRECTION_INPUT, pwStreamNodeId, flags, params, 1) != 0) { +#if PW_CHECK_VERSION(0, 2, 90) + if (pw_stream_connect(stream, PW_DIRECTION_INPUT, PW_ID_ANY, flags, params, 1) != 0) { #else - if (pw_stream_connect(pwStream, PW_DIRECTION_INPUT, nullptr, flags, params, 1) != 0) { + if (pw_stream_connect(stream, PW_DIRECTION_INPUT, nullptr, flags, params, 1) != 0) { #endif qWarning() << "Could not connect receiving stream"; isValid = false; } + + return stream; } PWFrameBuffer::Private::~Private() @@ -710,20 +788,36 @@ pw_stream_destroy(pwStream); } +#if !PW_CHECK_VERSION(0, 2, 90) if (pwRemote) { pw_remote_destroy(pwRemote); } +#endif + +#if PW_CHECK_VERSION(0, 2, 90) + if (pwCore) { + pw_core_disconnect(pwCore); + } - if (pwCore) + if (pwContext) { + pw_context_destroy(pwContext); + } +#else + if (pwCore) { pw_core_destroy(pwCore); + } +#endif if (pwMainLoop) { pw_thread_loop_destroy(pwMainLoop); } +#if !PW_CHECK_VERSION(0, 2, 90) if (pwLoop) { + pw_loop_leave(pwLoop); pw_loop_destroy(pwLoop); } +#endif } PWFrameBuffer::PWFrameBuffer(WId winid, QObject *parent) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/framebuffers/pipewire/pw_framebuffer.h new/krfb-20.04.0/framebuffers/pipewire/pw_framebuffer.h --- old/krfb-19.12.3/framebuffers/pipewire/pw_framebuffer.h 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/framebuffers/pipewire/pw_framebuffer.h 2020-04-15 11:22:14.000000000 +0200 @@ -1,6 +1,6 @@ /* This file is part of the KDE project Copyright (C) 2018 Oleg Chernovskiy <kanedias@xaker.ru> - Copyright (C) 2018 Jan Grulich <jgrulich@redhat.com> + Copyright (C) 2018-2020 Jan Grulich <jgrulich@redhat.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/krfb/krfb-events.desktop new/krfb-20.04.0/krfb/krfb-events.desktop --- old/krfb-19.12.3/krfb/krfb-events.desktop 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/krfb/krfb-events.desktop 2020-04-15 11:22:14.000000000 +0200 @@ -15,7 +15,6 @@ Comment[fi]=KRfb:n tapahtumaliitännäinen Comment[fr]=Modules externes d'événements pour Krfb Comment[gl]=Complementos de eventos para KRfb -Comment[ia]=Plug-ins de evento per KRfb Comment[it]=Estensioni degli eventi per KRfb Comment[ko]=KRfb 이벤트 플러그인 Comment[nl]=Plug-ins voor gebeurtenis voor KRfb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/krfb/krfb-events.json new/krfb-20.04.0/krfb/krfb-events.json --- old/krfb-19.12.3/krfb/krfb-events.json 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/krfb/krfb-events.json 2020-04-15 11:22:14.000000000 +0200 @@ -13,7 +13,6 @@ "Description[fi]": "KRfb:n tapahtumaliitännäinen", "Description[fr]": "Modules externes d'évènements pour KRfb", "Description[gl]": "Complementos de eventos para KRfb", - "Description[ia]": "Plug-ins de eventos per KRfb", "Description[it]": "Estensioni degli eventi per KRfb", "Description[ko]": "KRfb 이벤트 플러그인", "Description[nl]": "Plug-ins voor gebeurtenis voor KRfb", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/krfb/org.kde.krfb.appdata.xml new/krfb-20.04.0/krfb/org.kde.krfb.appdata.xml --- old/krfb-19.12.3/krfb/org.kde.krfb.appdata.xml 2020-03-01 10:49:41.000000000 +0100 +++ new/krfb-20.04.0/krfb/org.kde.krfb.appdata.xml 2020-04-15 11:22:14.000000000 +0200 @@ -150,9 +150,9 @@ </provides> <project_group>KDE</project_group> <releases> + <release version="20.04.0" date="2020-04-23"/> <release version="19.12.3" date="2020-03-05"/> <release version="19.12.2" date="2020-02-06"/> <release version="19.12.1" date="2020-01-09"/> - <release version="19.12.0" date="2019-12-12"/> </releases> </component> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/da/krfb.po new/krfb-20.04.0/po/da/krfb.po --- old/krfb-19.12.3/po/da/krfb.po 2020-03-03 01:29:36.000000000 +0100 +++ new/krfb-20.04.0/po/da/krfb.po 2020-04-17 02:36:38.000000000 +0200 @@ -2,22 +2,23 @@ # Danish translation of krfb # Copyright (C) # Erik Kjær Pedersen <erik@binghamton.edu>, 2002, 2003, 2004, 2005. -# Martin Schlander <mschlander@opensuse.org>, 2008, 2009, 2010, 2013, 2014, 2015, 2016. +# Martin Schlander <mschlander@opensuse.org>, 2008, 2009, 2010, 2013, 2014, 2015, 2016, 2020. # scootergrisen, 2017, 2019. msgid "" msgstr "" "Project-Id-Version: krfb\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2019-08-11 02:53+0200\n" -"PO-Revision-Date: 2019-03-02 13:47+0200\n" -"Last-Translator: scootergrisen\n" -"Language-Team: Danish\n" +"PO-Revision-Date: 2020-04-08 19:22+0200\n" +"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n" +"Language-Team: Danish <kde-i18n-doc@kde.org>\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Project-Style: kde\n" +"X-Generator: Lokalize 18.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" @@ -244,6 +245,8 @@ "Desktop Sharing is not running under an X11 Server or Wayland.\n" "Other display servers are currently not supported." msgstr "" +"Skrivebordsdeling kører ikke under en X11-server eller Wayland.\n" +"Andre display-servere er ikke understøttet i øjeblikket." #: mainwindow.cpp:54 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/de/docs/krfb/index.docbook new/krfb-20.04.0/po/de/docs/krfb/index.docbook --- old/krfb-19.12.3/po/de/docs/krfb/index.docbook 2020-03-03 01:29:38.000000000 +0100 +++ new/krfb-20.04.0/po/de/docs/krfb/index.docbook 2020-04-17 02:36:39.000000000 +0200 @@ -390,8 +390,7 @@
Deutsche Übersetzung: Frank Schütte <email F.Schuette@t-online.de</email </para -> -&underFDL; &underGPL; </chapter> +> &underFDL; &underGPL; </chapter>
&documentation.index; </book> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/en_GB/krfb.po new/krfb-20.04.0/po/en_GB/krfb.po --- old/krfb-19.12.3/po/en_GB/krfb.po 2020-03-03 01:29:36.000000000 +0100 +++ new/krfb-20.04.0/po/en_GB/krfb.po 2020-04-17 02:36:38.000000000 +0200 @@ -11,7 +11,7 @@ "POT-Creation-Date: 2019-08-11 02:53+0200\n" "PO-Revision-Date: 2019-08-03 16:33+0100\n" "Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n" -"Language-Team: British English <kde-i18n-doc@kde.org>\n" +"Language-Team: British English <kde-l10n-en_gb@kde.org>\n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/ia/krfb.po new/krfb-20.04.0/po/ia/krfb.po --- old/krfb-19.12.3/po/ia/krfb.po 2020-03-03 01:29:36.000000000 +0100 +++ new/krfb-20.04.0/po/ia/krfb.po 2020-04-17 02:36:38.000000000 +0200 @@ -1,20 +1,20 @@ # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # -# g.sora <g.sora@tiscali.it>, 2011, 2012, 2013, 2014, 2020. +# g.sora <g.sora@tiscali.it>, 2011, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2019-08-11 02:53+0200\n" -"PO-Revision-Date: 2020-01-18 23:50+0100\n" -"Last-Translator: Giovanni Sora <g.sora@tiscali.it>\n" -"Language-Team: Interlingua <kde-i18n-doc@kde.org>\n" +"PO-Revision-Date: 2014-05-07 13:59+0200\n" +"Last-Translator: G.Sora <g.sora@tiscali.it>\n" +"Language-Team: Interlingua <kde-l10n-ia@kde.org>\n" "Language: ia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 2.0\n" +"X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #, kde-format @@ -114,9 +114,10 @@ msgstr "Preferite Plugin Buffer de quadro" #: main.cpp:41 -#, kde-format +#, fuzzy, kde-format +#| msgid "VNC-compatible server to share KDE desktops" msgid "VNC-compatible server to share desktops" -msgstr "Servitor compatibile de VNC pro compartir scriptorios" +msgstr "Servitor compatibile con VNC pro compartir scriptorios de KDE" #: main.cpp:51 #, kde-format @@ -378,9 +379,10 @@ #. i18n: ectx: property (text), widget (QLabel, label) #: ui/configframebuffer.ui:22 -#, kde-format +#, fuzzy, kde-format +#| msgid "Preferred Frame Buffer Plugin" msgid "Preferred frameb&uffer plugin:" -msgstr "Preferite Plugin de quadro de b&uffer (framebuffer):" +msgstr "Preferite Plugin Buffer de quadro" #. i18n: ectx: property (text), widget (QLabel, helpText) #: ui/configframebuffer.ui:47 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/it/docs/krfb/index.docbook new/krfb-20.04.0/po/it/docs/krfb/index.docbook --- old/krfb-19.12.3/po/it/docs/krfb/index.docbook 2020-03-03 01:29:38.000000000 +0100 +++ new/krfb-20.04.0/po/it/docs/krfb/index.docbook 2020-04-17 02:36:39.000000000 +0200 @@ -15,6 +15,20 @@
&Brad.Hards; &Brad.Hards.mail; </author> <othercredit role="translator" <firstname +>Vincenzo</firstname +><surname +>Reale</surname +><affiliation +><address +><email +>smart2128@baslug.org</email +></address +></affiliation +><contrib +>Traduzione</contrib +></othercredit +><othercredit role="translator" +><firstname Luciano</firstname <surname Montanaro</surname @@ -27,7 +41,7 @@ <contrib Traduzione</contrib </othercredit -> <othercredit role="translator" +><othercredit role="translator" <firstname Daniele</firstname <surname @@ -373,7 +387,11 @@ La documentazione è copyright © 2003 &Brad.Hards; &Brad.Hards.mail; </para>
<para ->Traduzione di Luciano Montanaro <email +>Traduzione: Vincenzo Reale <email +>smart2128@baslug.org</email +></para +><para +>Traduzione: Luciano Montanaro <email
mikelima@cirulla.net</email </para &underFDL; &underGPL; </chapter> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/ko/krfb.po new/krfb-20.04.0/po/ko/krfb.po --- old/krfb-19.12.3/po/ko/krfb.po 2020-03-03 01:29:37.000000000 +0100 +++ new/krfb-20.04.0/po/ko/krfb.po 2020-04-17 02:36:39.000000000 +0200 @@ -1,14 +1,14 @@ # Translation of krfb to Korean. # Copyright (C) 2007-2008 This_file_is_part_of_KDE # This file is distributed under the same license as the kdenetwork package. -# Shinjo Park <kde@peremen.name>, 2007, 2008, 2009, 2011, 2013, 2014, 2015, 2017, 2019. +# Shinjo Park <kde@peremen.name>, 2007, 2008, 2009, 2011, 2013, 2014, 2015, 2017, 2019, 2020. # msgid "" msgstr "" "Project-Id-Version: krfb\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2019-08-11 02:53+0200\n" -"PO-Revision-Date: 2019-07-18 23:24+0200\n" +"PO-Revision-Date: 2020-04-05 12:24+0200\n" "Last-Translator: Shinjo Park <kde@peremen.name>\n" "Language-Team: Korean <kde-kr@kde.org>\n" "Language: ko\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Lokalize 18.12.3\n" +"X-Generator: Lokalize 19.04.3\n"
#, kde-format msgctxt "NAME OF TRANSLATORS" @@ -117,7 +117,7 @@ #: main.cpp:41 #, kde-format msgid "VNC-compatible server to share desktops" -msgstr "데스크톱을 공유하기 위한 VNC 호환 서버" +msgstr "데스크톱을 공유하는 VNC 호환 서버" #: main.cpp:51 #, kde-format @@ -235,7 +235,7 @@ #: main.cpp:128 #, kde-format msgid "Do not show the invitations management dialog at startup" -msgstr "시작할 때 초대장 관리 대화상자 보이지 않기" +msgstr "시작할 때 초대장 관리 대화 상자 보이지 않기" #: main.cpp:150 #, kde-format @@ -280,11 +280,11 @@ "If your computer is behind a firewall it may have a different address or be " "unreachable for other computers." msgstr "" -"이 필드는 쌍점(:)으로 구분된 이 컴퓨터의 주소와 디스플레이 번호를 포함합니" -"다.\n" +"이 필드에는 쌍점(:)으로 구분된 이 컴퓨터의 주소와 디스플레이 번호가 들어 있습" +"니다.\n" "\n" -"주소는 참고를 위해 나타나 있으며, 이 컴퓨터에 접근할 수 있는 임의의 주소를 사" -"용할 수 있습니다.\n" +"주소는 참고 목적으로 나타나 있으며, 이 컴퓨터에 접근할 수 있는 임의의 주소를 " +"사용할 수 있습니다.\n" "\n" "데스크톱 공유는 네트워크 설정에서 이 컴퓨터의 주소를 추측하지만 항상 성공하지" "는 않습니다.\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/ml/krfb.po new/krfb-20.04.0/po/ml/krfb.po --- old/krfb-19.12.3/po/ml/krfb.po 2020-03-03 01:29:37.000000000 +0100 +++ new/krfb-20.04.0/po/ml/krfb.po 2020-04-17 02:36:39.000000000 +0200 @@ -10,7 +10,7 @@ "POT-Creation-Date: 2019-08-11 02:53+0200\n" "PO-Revision-Date: 2009-01-26 03:03-0800\n" "Last-Translator: Praveen Arimbrathodiyil <pravi.a@gmail.com>\n" -"Language-Team: Malayalam <smc-discuss@googlegroups.com>\n" +"Language-Team: SMC <smc.org.in>\n" "Language: ml\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/nb/krfb.po new/krfb-20.04.0/po/nb/krfb.po --- old/krfb-19.12.3/po/nb/krfb.po 2020-03-03 01:29:37.000000000 +0100 +++ new/krfb-20.04.0/po/nb/krfb.po 2020-04-17 02:36:39.000000000 +0200 @@ -10,7 +10,7 @@ "POT-Creation-Date: 2019-08-11 02:53+0200\n" "PO-Revision-Date: 2014-04-28 18:28+0200\n" "Last-Translator: Bjørn Steensrud <bjornst@skogkatt.homelinux.org>\n" -"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n" +"Language-Team: Norwegian Bokmål <l10n-no@lister.huftis.org>\n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/nl/krfb.po new/krfb-20.04.0/po/nl/krfb.po --- old/krfb-19.12.3/po/nl/krfb.po 2020-03-03 01:29:37.000000000 +0100 +++ new/krfb-20.04.0/po/nl/krfb.po 2020-04-17 02:36:39.000000000 +0200 @@ -7,20 +7,20 @@ # Tom Albers <tomalbers@kde.nl>, 2004. # Rinse de Vries <rinsedevries@kde.nl>2003, 2004, 2005, 2007, 2008. # Freek de Kruijf <f.de.kruijf@hetnet.nl>, 2009. -# Freek de Kruijf <freekdekruijf@kde.nl>, 2009, 2010, 2013, 2014, 2015, 2017, 2019. +# Freek de Kruijf <freekdekruijf@kde.nl>, 2009, 2010, 2013, 2014, 2015, 2017, 2019, 2020. msgid "" msgstr "" "Project-Id-Version: krfb\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2019-08-11 02:53+0200\n" -"PO-Revision-Date: 2019-07-08 13:46+0200\n" +"PO-Revision-Date: 2020-01-19 19:46+0100\n" "Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n" "Language-Team: Dutch <kde-i18n-nl@kde.org>\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 19.04.2\n" +"X-Generator: Lokalize 19.12.1\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #, kde-format @@ -28,7 +28,7 @@ msgid "Your names" msgstr "" "Rinse de Vries - 2003 tot 2007,Wilbert Berendsen - 2003,Bram Schoenmakers - " -"2004; 2005,Tom Albers - 2004,Freek de Kruijf - 2013; 2017 t/m 2019" +"2004; 2005,Tom Albers - 2004,Freek de Kruijf - 2013; 2017 t/m 2020" #, kde-format msgctxt "EMAIL OF TRANSLATORS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/nn/krfb.po new/krfb-20.04.0/po/nn/krfb.po --- old/krfb-19.12.3/po/nn/krfb.po 2020-03-03 01:29:37.000000000 +0100 +++ new/krfb-20.04.0/po/nn/krfb.po 2020-04-17 02:36:39.000000000 +0200 @@ -9,7 +9,7 @@ "POT-Creation-Date: 2019-08-11 02:53+0200\n" "PO-Revision-Date: 2018-11-10 14:26+0100\n" "Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n" -"Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\n" +"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krfb-19.12.3/po/zh_CN/krfb.po new/krfb-20.04.0/po/zh_CN/krfb.po --- old/krfb-19.12.3/po/zh_CN/krfb.po 2020-03-03 01:29:38.000000000 +0100 +++ new/krfb-20.04.0/po/zh_CN/krfb.po 2020-04-17 02:36:39.000000000 +0200 @@ -12,7 +12,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2019-08-11 02:53+0200\n" -"PO-Revision-Date: 2020-01-20 21:56\n" +"PO-Revision-Date: 2020-03-25 19:57\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n"
participants (1)
-
root