diff --git a/platform/linuxbsd/freedesktop_portal_desktop.cpp b/platform/linuxbsd/freedesktop_portal_desktop.cpp index 505e452ee8b5..1e1dae7a5185 100644 --- a/platform/linuxbsd/freedesktop_portal_desktop.cpp +++ b/platform/linuxbsd/freedesktop_portal_desktop.cpp @@ -948,7 +948,7 @@ bool FreeDesktopPortalDesktop::indicator_register(DisplayServer::IndicatorID p_i return true; } -bool FreeDesktopPortalDesktop::indicator_create(DisplayServer::IndicatorID p_id, const Ref &p_icon) { +bool FreeDesktopPortalDesktop::indicator_create(DisplayServer::IndicatorID p_id, const Ref &p_icon) { MutexLock mutex_lock(dbus_mutex); ERR_FAIL_COND_V(indicators.has(p_id), false); @@ -992,7 +992,7 @@ bool FreeDesktopPortalDesktop::indicator_create(DisplayServer::IndicatorID p_id, return true; } -Error FreeDesktopPortalDesktop::indicator_set_icon(DisplayServer::IndicatorID p_id, const Ref &p_icon) { +Error FreeDesktopPortalDesktop::indicator_set_icon(DisplayServer::IndicatorID p_id, const Ref &p_icon) { MutexLock mutex_lock(dbus_mutex); ERR_FAIL_COND_V(!indicators.has(p_id), ERR_UNCONFIGURED); @@ -1001,9 +1001,9 @@ Error FreeDesktopPortalDesktop::indicator_set_icon(DisplayServer::IndicatorID p_ ERR_FAIL_COND_V(p_icon.is_null(), FAILED); // We'll have to manipulate the icon a bit. - Ref image = p_icon->duplicate(true); + Ref image = p_icon->get_image(); - if (p_icon->is_compressed()) { + if (image->is_compressed()) { Error err = image->decompress(); ERR_FAIL_COND_V_MSG(err != OK, err, "Couldn't decompress VRAM-compressed status-icon. Switch to a lossless compression mode in the Import dock."); } diff --git a/platform/linuxbsd/freedesktop_portal_desktop.h b/platform/linuxbsd/freedesktop_portal_desktop.h index 650c92cfe3a7..5a2af48e5798 100644 --- a/platform/linuxbsd/freedesktop_portal_desktop.h +++ b/platform/linuxbsd/freedesktop_portal_desktop.h @@ -33,9 +33,9 @@ #ifdef DBUS_ENABLED -#include "core/io/image.h" #include "core/os/thread.h" #include "core/os/thread_safe.h" +#include "scene/resources/texture.h" #include "servers/display_server.h" #ifdef SOWRAP_ENABLED @@ -68,7 +68,6 @@ class FreeDesktopPortalDesktop : public Object { bool opt_in_cb = false; }; - struct FileDialogCallback { Callable callback; Variant status; @@ -156,8 +155,8 @@ class FreeDesktopPortalDesktop : public Object { } bool indicator_register(DisplayServer::IndicatorID p_id); - bool indicator_create(DisplayServer::IndicatorID p_id, const Ref &p_icon); - Error indicator_set_icon(DisplayServer::IndicatorID p_id, const Ref &p_icon); + bool indicator_create(DisplayServer::IndicatorID p_id, const Ref &p_icon); + Error indicator_set_icon(DisplayServer::IndicatorID p_id, const Ref &p_icon); void indicator_set_tooltip(DisplayServer::IndicatorID p_id, const String &p_tooltip); void indicator_set_callback(DisplayServer::IndicatorID p_id, const Callable &p_callback); void indicator_destroy(DisplayServer::IndicatorID p_id); diff --git a/platform/linuxbsd/wayland/display_server_wayland.cpp b/platform/linuxbsd/wayland/display_server_wayland.cpp index 32ba3688e084..1a6330a0e435 100644 --- a/platform/linuxbsd/wayland/display_server_wayland.cpp +++ b/platform/linuxbsd/wayland/display_server_wayland.cpp @@ -207,6 +207,7 @@ bool DisplayServerWayland::has_feature(Feature p_feature) const { case FEATURE_WINDOW_TRANSPARENCY: case FEATURE_HIDPI: case FEATURE_SWAP_BUFFERS: + case FEATURE_STATUS_INDICATOR: case FEATURE_KEEP_SCREEN_ON: case FEATURE_IME: case FEATURE_CLIPBOARD_PRIMARY: {