# --- T2-COPYRIGHT-BEGIN --- # t2/package/*/open-vm-tools/hotix-sigc++-3.8.patch # Copyright (C) 2026 The T2 SDE Project # SPDX-License-Identifier: GPL-2.0 or patched project license # --- T2-COPYRIGHT-END --- Use the signal syntax and drop the slot/signal bridge, libsigc++ 3.8 defines these primary templates itself. diff -Nrup open-vm-tools-stable-13.1.0.orig/open-vm-tools/lib/include/sigc++2to3.h open-vm-tools-stable-13.1.0/open-vm-tools/lib/include/sigc++2to3.h --- open-vm-tools-stable-13.1.0.orig/open-vm-tools/lib/include/sigc++2to3.h 2026-05-14 06:59:48.000000000 +0200 +++ open-vm-tools-stable-13.1.0/open-vm-tools/lib/include/sigc++2to3.h 2026-09-27 19:02:25.332379560 +0200 @@ -36,18 +36,7 @@ namespace sigc { -// Bridge slot syntax change -template -class slot : public slot { -private: - using _true_slot = slot; -public: - inline slot() = default; - inline slot(const _true_slot& src) : _true_slot(src) {} - template - inline slot(const T_functor& func) : _true_slot(func) {} -}; - +// sigc++ 3.8 rejects slot/signal, users need template using slot0 = slot; template @@ -66,17 +55,6 @@ template ; -// Bridge signal syntax change -template -class signal : public signal, public trackable { -public: - signal() = default; - - decltype(auto) make_slot() const { - return mem_fun(*this, &signal::emit); - } -}; - template using signal0 = signal; template diff -Nrup open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dnd/copyPasteRpc.hh open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dnd/copyPasteRpc.hh --- open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dnd/copyPasteRpc.hh 2026-05-14 06:59:48.000000000 +0200 +++ open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dnd/copyPasteRpc.hh 2026-09-27 19:02:08.855554586 +0200 @@ -39,18 +39,18 @@ public: virtual ~CopyPasteRpc(void) {}; /* sigc signals for CopyPaste source callback. */ - sigc::signal srcRecvClipChanged; - sigc::signal requestFilesChanged; - sigc::signal getFilesDoneChanged; + sigc::signal srcRecvClipChanged; + sigc::signal requestFilesChanged; + sigc::signal getFilesDoneChanged; /* sigc signal for CopyPaste destination callback. */ - sigc::signal destRequestClipChanged; + sigc::signal destRequestClipChanged; /* sigc signal for ping reply callback. */ - sigc::signal pingReplyChanged; + sigc::signal pingReplyChanged; /* sigc signal for rpc command reply received. */ - sigc::signal cmdReplyChanged; + sigc::signal cmdReplyChanged; virtual void Init(void) = 0; virtual void SendPing(uint32 caps) = 0; diff -Nrup open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dnd/dndRpc.hh open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dnd/dndRpc.hh --- open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dnd/dndRpc.hh 2026-05-14 06:59:48.000000000 +0200 +++ open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dnd/dndRpc.hh 2026-09-27 19:02:08.855897915 +0200 @@ -40,30 +40,30 @@ public: virtual ~DnDRpc(void) {}; /* sigc signals for DnD source callback. */ - sigc::signal srcDragBeginChanged; - sigc::signal srcCancelChanged; - sigc::signal srcDropChanged; + sigc::signal srcDragBeginChanged; + sigc::signal srcCancelChanged; + sigc::signal srcDropChanged; /* sigc signals for DnD destination callback. */ - sigc::signal destDragEnterReplyChanged; - sigc::signal destPrivDragEnterChanged; - sigc::signal destPrivDragLeaveChanged; - sigc::signal destPrivDropChanged; - sigc::signal destDropChanged; - sigc::signal destCancelChanged; - - sigc::signal moveMouseChanged; - sigc::signal updateFeedbackChanged; - sigc::signal queryExitingChanged; - sigc::signal dragNotPendingChanged; - sigc::signal requestFileChanged; - sigc::signal getFilesDoneChanged; + sigc::signal destDragEnterReplyChanged; + sigc::signal destPrivDragEnterChanged; + sigc::signal destPrivDragLeaveChanged; + sigc::signal destPrivDropChanged; + sigc::signal destDropChanged; + sigc::signal destCancelChanged; + + sigc::signal moveMouseChanged; + sigc::signal updateFeedbackChanged; + sigc::signal queryExitingChanged; + sigc::signal dragNotPendingChanged; + sigc::signal requestFileChanged; + sigc::signal getFilesDoneChanged; /* sigc signal for responding to ping reply */ - sigc::signal pingReplyChanged; + sigc::signal pingReplyChanged; /* sigc signal for rpc cmd reply received. */ - sigc::signal cmdReplyChanged; + sigc::signal cmdReplyChanged; /* DnD source. */ virtual bool SrcDragBeginDone(uint32 sessionId) = 0; diff -Nrup open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dnd/fileTransferRpc.hh open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dnd/fileTransferRpc.hh --- open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dnd/fileTransferRpc.hh 2026-05-14 06:59:48.000000000 +0200 +++ open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dnd/fileTransferRpc.hh 2026-09-27 19:02:08.856044922 +0200 @@ -38,8 +38,8 @@ class LIB_EXPORT FileTransferRpc public: virtual ~FileTransferRpc(void) {}; - sigc::signal HgfsPacketReceived; - sigc::signal HgfsReplyReceived; + sigc::signal HgfsPacketReceived; + sigc::signal HgfsReplyReceived; virtual void Init(void) = 0; virtual bool SendHgfsPacket(uint32 sessionId, diff -Nrup open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dndGuestBase/guestCopyPaste.hh open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dndGuestBase/guestCopyPaste.hh --- open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dndGuestBase/guestCopyPaste.hh 2026-05-14 06:59:48.000000000 +0200 +++ open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dndGuestBase/guestCopyPaste.hh 2026-09-27 19:02:08.856483004 +0200 @@ -48,9 +48,9 @@ public: GuestCopyPasteMgr(DnDCPTransport *transport); ~GuestCopyPasteMgr(void); - sigc::signal srcRecvClipChanged; - sigc::signal destRequestClipChanged; - sigc::signal getFilesDoneChanged; + sigc::signal srcRecvClipChanged; + sigc::signal destRequestClipChanged; + sigc::signal getFilesDoneChanged; GUEST_CP_STATE GetState(void) { return mCPState; } void SetState(GUEST_CP_STATE state); diff -Nrup open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dndGuestBase/guestDnD.hh open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dndGuestBase/guestDnD.hh --- open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/dndGuestBase/guestDnD.hh 2026-05-14 06:59:48.000000000 +0200 +++ open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/dndGuestBase/guestDnD.hh 2026-09-27 19:02:08.856576899 +0200 @@ -73,18 +73,18 @@ public: ToolsAppCtx *ctx); virtual ~GuestDnDMgr(void); - sigc::signal moveMouseChanged; - sigc::signal updateDetWndChanged; - sigc::signal stateChanged; + sigc::signal moveMouseChanged; + sigc::signal updateDetWndChanged; + sigc::signal stateChanged; - sigc::signal srcDragBeginChanged; - sigc::signal srcDropChanged; - sigc::signal srcCancelChanged; - sigc::signal getFilesDoneChanged; + sigc::signal srcDragBeginChanged; + sigc::signal srcDropChanged; + sigc::signal srcCancelChanged; + sigc::signal getFilesDoneChanged; - sigc::signal destCancelChanged; - sigc::signal privDropChanged; - sigc::signal destMoveDetWndToMousePosChanged; + sigc::signal destCancelChanged; + sigc::signal privDropChanged; + sigc::signal destMoveDetWndToMousePosChanged; GuestDnDSrc *GetDnDSrc(void) { return mSrc; } GuestDnDDest *GetDnDDest(void) { return mDest; } diff -Nrup open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/xutils/xutils.cc open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/xutils/xutils.cc --- open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/xutils/xutils.cc 2026-05-14 06:59:48.000000000 +0200 +++ open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/xutils/xutils.cc 2026-09-27 19:02:08.856960229 +0200 @@ -42,14 +42,14 @@ namespace xutils { /* Actual definitions of the signals in this class. */ -sigc::signal > currentDesktopChanged; -sigc::signal > desktopLayoutChanged; -sigc::signal > desktopGeometryChanged; -sigc::signal > desktopViewportChanged; -sigc::signal > windowStackChanged; -sigc::signal > windowManagerChanged; -sigc::signal > activeWindowChanged; -sigc::signal > workAreaChanged; +sigc::signal)> currentDesktopChanged; +sigc::signal)> desktopLayoutChanged; +sigc::signal)> desktopGeometryChanged; +sigc::signal)> desktopViewportChanged; +sigc::signal)> windowStackChanged; +sigc::signal)> windowManagerChanged; +sigc::signal)> activeWindowChanged; +sigc::signal)> workAreaChanged; /* Necessary for calculating per-monitor _NET_WORKAREA in GetMonitorWorkArea() */ struct NETWMStrutPartial { diff -Nrup open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/xutils/xutils.hh open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/xutils/xutils.hh --- open-vm-tools-stable-13.1.0.orig/open-vm-tools/services/plugins/dndcp/xutils/xutils.hh 2026-05-14 06:59:48.000000000 +0200 +++ open-vm-tools-stable-13.1.0/open-vm-tools/services/plugins/dndcp/xutils/xutils.hh 2026-09-27 19:02:08.857300508 +0200 @@ -65,22 +65,22 @@ uint32 GetDesktopForWindow(Glib::RefPtr< uint32 GetNumDesktops(Glib::RefPtr screen); uint32 GetCurrentDesktop(Glib::RefPtr screen); -extern sigc::signal > currentDesktopChanged; +extern sigc::signal)> currentDesktopChanged; bool GetDesktopLayout(Glib::RefPtr screen, uint32& rows, uint32& columns, Gtk::CornerType& corner, Gtk::Orientation& orientation); -extern sigc::signal > desktopLayoutChanged; +extern sigc::signal)> desktopLayoutChanged; bool GetDesktopGeometry(Glib::RefPtr screen, uint32& width, uint32& height); -extern sigc::signal > desktopGeometryChanged; +extern sigc::signal)> desktopGeometryChanged; bool GetDesktopViewport(Glib::RefPtr screen, uint32 desktopIndex, VMPoint& viewport); -extern sigc::signal > desktopViewportChanged; +extern sigc::signal)> desktopViewportChanged; -extern sigc::signal > activeWindowChanged; +extern sigc::signal)> activeWindowChanged; /* Window stacking */ void RaiseWindow(Glib::RefPtr window, @@ -88,7 +88,7 @@ void RaiseWindow(Glib::RefPtr(), guint32 timestamp = 0); HostWindowList GetHostWindowStack(); -extern sigc::signal > windowStackChanged; +extern sigc::signal)> windowStackChanged; /* Multi-head */ @@ -96,7 +96,7 @@ void GetMonitorWorkArea(Glib::RefPtr screen); -extern sigc::signal > windowManagerChanged; +extern sigc::signal)> windowManagerChanged; void SetFullscreenMonitorsHint(Glib::RefPtr window, std::vector topology); @@ -109,7 +109,7 @@ void GetPointerLocation(const Glib::RefP int& x, int& y, Gdk::ModifierType& mask); -extern sigc::signal > workAreaChanged; +extern sigc::signal)> workAreaChanged; bool GetXWindowSize(const Glib::RefPtr& window, int& width, int& height);