mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Update submodules
This commit is contained in:
parent
b040b62b4e
commit
5b62d97288
8 changed files with 41 additions and 230 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -100,3 +100,6 @@
|
||||||
[submodule "Telegram/ThirdParty/libprisma"]
|
[submodule "Telegram/ThirdParty/libprisma"]
|
||||||
path = Telegram/ThirdParty/libprisma
|
path = Telegram/ThirdParty/libprisma
|
||||||
url = https://github.com/desktop-app/libprisma.git
|
url = https://github.com/desktop-app/libprisma.git
|
||||||
|
[submodule "Telegram/ThirdParty/xdg-desktop-portal"]
|
||||||
|
path = Telegram/ThirdParty/xdg-desktop-portal
|
||||||
|
url = https://github.com/flatpak/xdg-desktop-portal.git
|
||||||
|
|
|
@ -1651,9 +1651,6 @@ else()
|
||||||
desktop-app::external_glibmm
|
desktop-app::external_glibmm
|
||||||
)
|
)
|
||||||
|
|
||||||
include(${cmake_helpers_loc}/external/glib/generate_dbus.cmake)
|
|
||||||
generate_dbus(Telegram org.freedesktop.portal. XdpInhibit ${src_loc}/platform/linux/org.freedesktop.portal.Inhibit.xml)
|
|
||||||
|
|
||||||
if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
|
if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
|
||||||
target_link_libraries(Telegram
|
target_link_libraries(Telegram
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
|
|
@ -78,24 +78,24 @@ std::unique_ptr<base::Platform::DBus::ServiceWatcher> CreateServiceWatcher() {
|
||||||
Gio::DBus::BusType::SESSION);
|
Gio::DBus::BusType::SESSION);
|
||||||
|
|
||||||
const auto activatable = [&] {
|
const auto activatable = [&] {
|
||||||
try {
|
const auto names = base::Platform::DBus::ListActivatableNames(
|
||||||
return ranges::contains(
|
connection->gobj());
|
||||||
base::Platform::DBus::ListActivatableNames(connection),
|
|
||||||
kService,
|
if (!names) {
|
||||||
&Glib::ustring::raw);
|
|
||||||
} catch (...) {
|
|
||||||
// avoid service restart loop in sandboxed environments
|
// avoid service restart loop in sandboxed environments
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ranges::contains(*names, kService);
|
||||||
}();
|
}();
|
||||||
|
|
||||||
return std::make_unique<base::Platform::DBus::ServiceWatcher>(
|
return std::make_unique<base::Platform::DBus::ServiceWatcher>(
|
||||||
connection,
|
connection->gobj(),
|
||||||
kService,
|
kService,
|
||||||
[=](
|
[=](
|
||||||
const Glib::ustring &service,
|
const std::string &service,
|
||||||
const Glib::ustring &oldOwner,
|
const std::string &oldOwner,
|
||||||
const Glib::ustring &newOwner) {
|
const std::string &newOwner) {
|
||||||
Core::Sandbox::Instance().customEnterFromEventLoop([&] {
|
Core::Sandbox::Instance().customEnterFromEventLoop([&] {
|
||||||
if (activatable && newOwner.empty()) {
|
if (activatable && newOwner.empty()) {
|
||||||
Core::App().notifications().clearAll();
|
Core::App().notifications().clearAll();
|
||||||
|
@ -115,27 +115,28 @@ void StartServiceAsync(Fn<void()> callback) {
|
||||||
const auto connection = Gio::DBus::Connection::get_sync(
|
const auto connection = Gio::DBus::Connection::get_sync(
|
||||||
Gio::DBus::BusType::SESSION);
|
Gio::DBus::BusType::SESSION);
|
||||||
|
|
||||||
base::Platform::DBus::StartServiceByNameAsync(
|
namespace DBus = base::Platform::DBus;
|
||||||
connection,
|
DBus::StartServiceByNameAsync(
|
||||||
|
connection->gobj(),
|
||||||
kService,
|
kService,
|
||||||
[=](Fn<base::Platform::DBus::StartReply()> result) {
|
[=](Fn<DBus::Result<DBus::StartReply>()> result) {
|
||||||
Core::Sandbox::Instance().customEnterFromEventLoop([&] {
|
Core::Sandbox::Instance().customEnterFromEventLoop([&] {
|
||||||
Noexcept([&] {
|
Noexcept([&] {
|
||||||
try {
|
// get the error if any
|
||||||
result(); // get the error if any
|
if (const auto ret = result(); !ret) {
|
||||||
} catch (const Glib::Error &e) {
|
|
||||||
static const auto NotSupportedErrors = {
|
static const auto NotSupportedErrors = {
|
||||||
"org.freedesktop.DBus.Error.ServiceUnknown",
|
"org.freedesktop.DBus.Error.ServiceUnknown",
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto errorName =
|
if (ranges::none_of(
|
||||||
Gio::DBus::ErrorUtils::get_remote_error(e)
|
|
||||||
.raw();
|
|
||||||
|
|
||||||
if (!ranges::contains(
|
|
||||||
NotSupportedErrors,
|
NotSupportedErrors,
|
||||||
errorName)) {
|
[&](const auto &error) {
|
||||||
throw;
|
return strstr(
|
||||||
|
ret.error()->what(),
|
||||||
|
error);
|
||||||
|
})) {
|
||||||
|
throw std::runtime_error(
|
||||||
|
ret.error()->what());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -156,25 +157,20 @@ bool GetServiceRegistered() {
|
||||||
const auto connection = Gio::DBus::Connection::get_sync(
|
const auto connection = Gio::DBus::Connection::get_sync(
|
||||||
Gio::DBus::BusType::SESSION);
|
Gio::DBus::BusType::SESSION);
|
||||||
|
|
||||||
const auto hasOwner = [&] {
|
const auto hasOwner = base::Platform::DBus::NameHasOwner(
|
||||||
try {
|
connection->gobj(),
|
||||||
return base::Platform::DBus::NameHasOwner(
|
kService
|
||||||
connection,
|
).value_or(false);
|
||||||
kService);
|
|
||||||
} catch (...) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}();
|
|
||||||
|
|
||||||
static const auto activatable = [&] {
|
static const auto activatable = [&] {
|
||||||
try {
|
const auto names = base::Platform::DBus::ListActivatableNames(
|
||||||
return ranges::contains(
|
connection->gobj());
|
||||||
base::Platform::DBus::ListActivatableNames(connection),
|
|
||||||
kService,
|
if (!names) {
|
||||||
&Glib::ustring::raw);
|
|
||||||
} catch (...) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ranges::contains(*names, kService);
|
||||||
}();
|
}();
|
||||||
|
|
||||||
return hasOwner || activatable;
|
return hasOwner || activatable;
|
||||||
|
|
|
@ -1,186 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!--
|
|
||||||
Copyright (C) 2016 Red Hat, Inc.
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library 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
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Author: Matthias Clasen <mclasen@redhat.com>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
|
|
||||||
<!--
|
|
||||||
org.freedesktop.portal.Inhibit:
|
|
||||||
@short_description: Portal for inhibiting session transitions
|
|
||||||
|
|
||||||
This simple interface lets sandboxed applications inhibit the user
|
|
||||||
session from ending, suspending, idling or getting switched away.
|
|
||||||
|
|
||||||
This documentation describes version 3 of this interface.
|
|
||||||
-->
|
|
||||||
<interface name="org.freedesktop.portal.Inhibit">
|
|
||||||
<!--
|
|
||||||
Inhibit:
|
|
||||||
@window: Identifier for the window
|
|
||||||
@flags: Flags identifying what is inhibited
|
|
||||||
@options: Vardict with optional further information
|
|
||||||
@handle: Object path for the #org.freedesktop.portal.Request object representing this call
|
|
||||||
|
|
||||||
Inhibits a session status changes. To remove the inhibition,
|
|
||||||
call org.freedesktop.portal.Request.Close() on the returned
|
|
||||||
handle.
|
|
||||||
|
|
||||||
The flags determine what changes are inhibited:
|
|
||||||
<simplelist>
|
|
||||||
<member>1: Logout</member>
|
|
||||||
<member>2: User Switch</member>
|
|
||||||
<member>4: Suspend</member>
|
|
||||||
<member>8: Idle</member>
|
|
||||||
</simplelist>
|
|
||||||
|
|
||||||
Supported keys in the @options vardict include:
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>handle_token s</term>
|
|
||||||
<listitem><para>
|
|
||||||
A string that will be used as the last element of the @handle. Must be a valid
|
|
||||||
object path element. See the #org.freedesktop.portal.Request documentation for
|
|
||||||
more information about the @handle.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>reason s</term>
|
|
||||||
<listitem><para>User-visible reason for the inhibition.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
-->
|
|
||||||
<method name="Inhibit">
|
|
||||||
<arg type="s" name="window" direction="in"/>
|
|
||||||
<arg type="u" name="flags" direction="in"/>
|
|
||||||
<arg type="a{sv}" name="options" direction="in"/>
|
|
||||||
<arg type="o" name="handle" direction="out"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
CreateMonitor:
|
|
||||||
@window: the parent window
|
|
||||||
@options: Vardict with optional further information
|
|
||||||
@handle: Object path for the #org.freedesktop.portal.Request object representing this call
|
|
||||||
|
|
||||||
Creates a monitoring session. While this session is
|
|
||||||
active, the caller will receive StateChanged signals
|
|
||||||
with updates on the session state.
|
|
||||||
|
|
||||||
A successfully created session can at any time be closed using
|
|
||||||
org.freedesktop.portal.Session::Close, or may at any time be closed
|
|
||||||
by the portal implementation, which will be signalled via
|
|
||||||
#org.freedesktop.portal.Session::Closed.
|
|
||||||
|
|
||||||
Supported keys in the @options vardict include:
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>handle_token s</term>
|
|
||||||
<listitem><para>
|
|
||||||
A string that will be used as the last element of the @handle. Must be a valid
|
|
||||||
object path element. See the #org.freedesktop.portal.Request documentation for
|
|
||||||
more information about the @handle.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>session_handle_token s</term>
|
|
||||||
<listitem><para>
|
|
||||||
A string that will be used as the last element of the session handle. Must be a valid
|
|
||||||
object path element. See the #org.freedesktop.portal.Session documentation for
|
|
||||||
more information about the session handle.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
The following results get returned via the #org.freedesktop.portal.Request::Response signal:
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>session_handle o</term>
|
|
||||||
<listitem><para>
|
|
||||||
The session handle. An object path for the
|
|
||||||
#org.freedesktop.portal.Session object representing the created
|
|
||||||
session.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
This method was added in version 2 of this interface.
|
|
||||||
-->
|
|
||||||
<method name="CreateMonitor">
|
|
||||||
<arg type="s" name="window" direction="in"/>
|
|
||||||
<arg type="a{sv}" name="options" direction="in"/>
|
|
||||||
<arg type="o" name="handle" direction="out"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
StateChanged:
|
|
||||||
@session_handle: Object path for the #org.freedesktop.portal.Session object
|
|
||||||
@state: Vardict with information about the session state
|
|
||||||
|
|
||||||
The StateChanged signal is sent to active monitoring sessions when
|
|
||||||
the session state changes.
|
|
||||||
|
|
||||||
When the session state changes to 'Query End', clients with active monitoring
|
|
||||||
sessions are expected to respond by calling
|
|
||||||
org.freedesktop.portal.Inhibit.QueryEndResponse() within a second
|
|
||||||
of receiving the StateChanged signal. They may call org.freedesktop.portal.Inhibit.Inhibit()
|
|
||||||
first to inhibit logout, to prevent the session from proceeding to the Ending state.
|
|
||||||
|
|
||||||
The following information may get returned in the @state vardict:
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>screensaver-active b</term>
|
|
||||||
<listitem><para>
|
|
||||||
Whether the screensaver is active.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>session-state u</term>
|
|
||||||
<listitem><para>
|
|
||||||
The state of the session. This member is new in version 3.
|
|
||||||
</para>
|
|
||||||
<simplelist>
|
|
||||||
<member>1: Running</member>
|
|
||||||
<member>2: Query End</member>
|
|
||||||
<member>3: Ending</member>
|
|
||||||
</simplelist>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
-->
|
|
||||||
<signal name="StateChanged">
|
|
||||||
<arg type="o" name="session_handle" direction="out"/>
|
|
||||||
<arg type="a{sv}" name="state" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
QueryEndResponse:
|
|
||||||
@session_handle: Object path for the #org.freedesktop.portal.Session object
|
|
||||||
|
|
||||||
Acknowledges that the caller received the #org.freedesktop.portal.Inhibit::StateChanged
|
|
||||||
signal. This method should be called within one second or receiving a StateChanged
|
|
||||||
signal with the 'Query End' state.
|
|
||||||
|
|
||||||
Since version 3.
|
|
||||||
-->
|
|
||||||
<method name="QueryEndResponse">
|
|
||||||
<arg type="o" name="session_handle" direction="in"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<property name="version" type="u" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
1
Telegram/ThirdParty/xdg-desktop-portal
vendored
Submodule
1
Telegram/ThirdParty/xdg-desktop-portal
vendored
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit fa8d41a2f9a5d30a1e41568b6fb53b046dce14dc
|
|
@ -1 +1 @@
|
||||||
Subproject commit 888a19075b569eda3d18a977543320823b984ae0
|
Subproject commit cee9211bd58e054f24ad5e7f122037f71a44b237
|
|
@ -1 +1 @@
|
||||||
Subproject commit 4fce8b1971721da739619acf36da0fe79d614a23
|
Subproject commit 27af88195bca687e9d2a52b4fcd4e83ef5476be9
|
2
cmake
2
cmake
|
@ -1 +1 @@
|
||||||
Subproject commit a46279fcfe69ebcc806bb31679ccece5f7c07508
|
Subproject commit b699c232d57d50070a7b1b861809e206624f48d4
|
Loading…
Add table
Reference in a new issue