Skip to content

Commit 68fb676

Browse files
committed
Add support for Wayland in iDynTree::Visualizer
1 parent b780df1 commit 68fb676

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/visualization/src/Visualizer.cpp

+18-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#define GLFW_EXPOSE_NATIVE_NSGL
2727
#elif defined(__linux__)
2828
#define GLFW_EXPOSE_NATIVE_X11
29+
#define GLFW_EXPOSE_NATIVE_WAYLAND
2930
#define GLFW_EXPOSE_NATIVE_GLX
3031
#endif
3132

@@ -162,7 +163,7 @@ struct Visualizer::VisualizerPimpl
162163
#elif defined(__APPLE__)
163164
id m_windowId;
164165
#elif defined(__linux__)
165-
Window m_windowId;
166+
void* m_windowId; // Pointer to either wl_surface* or X11 Window
166167
#endif
167168
#endif
168169

@@ -505,8 +506,22 @@ bool Visualizer::init(const VisualizerOptions &visualizerOptions)
505506
pimpl->m_windowId = glfwGetCocoaWindow(pimpl->m_window);
506507
irrDevParams.WindowId = (void*)(pimpl->m_windowId);
507508
#elif defined(__linux__)
508-
pimpl->m_windowId = glfwGetX11Window(pimpl->m_window);
509-
irrDevParams.WindowId = (void*)(pimpl->m_windowId);
509+
void* nativeWindow = nullptr;
510+
511+
// Try Wayland first
512+
struct wl_surface* waylandWindow = glfwGetWaylandWindow(pimpl->m_window);
513+
if (waylandWindow)
514+
{
515+
nativeWindow = static_cast<void*>(waylandWindow);
516+
}
517+
else
518+
{
519+
// Fallback to X11
520+
Window x11Window = glfwGetX11Window(pimpl->m_window);
521+
if (x11Window)
522+
nativeWindow = static_cast<void*>(reinterpret_cast<void*>(x11Window));
523+
}
524+
irrDevParams.WindowId = nativeWindow;
510525
#endif
511526

512527
irrDevParams.DeviceType = irr::EIDT_SDL;

0 commit comments

Comments
 (0)