Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- src/Makefile.am | 2 ++ src/spice-streaming-agent.cpp | 1 + src/xorg-utils.cpp | 33 +++++++++++++++++++++++++++++++++ src/xorg-utils.hpp | 8 ++++++++ 4 files changed, 44 insertions(+) create mode 100644 src/xorg-utils.cpp create mode 100644 src/xorg-utils.hpp diff --git a/src/Makefile.am b/src/Makefile.am index 8d5c5bd..bbfaa35 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -53,6 +53,8 @@ spice_streaming_agent_SOURCES = \ static-plugin.hpp \ concrete-agent.cpp \ concrete-agent.hpp \ + xorg-utils.cpp \ + xorg-utils.hpp \ mjpeg-fallback.cpp \ jpeg.cpp \ jpeg.hpp \ diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp index 94d9d25..a688d1f 100644 --- a/src/spice-streaming-agent.cpp +++ b/src/spice-streaming-agent.cpp @@ -33,6 +33,7 @@ #include <spice-streaming-agent/plugin.hpp> #include "hexdump.h" +#include "xorg-utils.hpp" #include "concrete-agent.hpp" using namespace std; diff --git a/src/xorg-utils.cpp b/src/xorg-utils.cpp new file mode 100644 index 0000000..184ca63 --- /dev/null +++ b/src/xorg-utils.cpp @@ -0,0 +1,33 @@ +#include <exception> +#include <stdexcept> +#include <X11/Xatom.h> + +#include "xorg-utils.hpp" + +int +get_win_prop_int(Display *display, Window win, Atom atom) +{ + int status; + unsigned char *prop; + unsigned long bytes_after, nitems; + int actual_format; + Atom actual_type; + + status = XGetWindowProperty(display, win, atom, 0, 64, + False, XA_INTEGER, &actual_type, + &actual_format, &nitems, &bytes_after, + &prop); + if (status == Success && nitems > 0) { + switch (actual_format) { + case 8: + return *(const signed char *)prop; + case 16: + return *(const short *)prop; + case 32: + // although format is 32 is represented always as a long which + // could be 64 bit + return *(const long *)prop; + } + } + throw std::runtime_error("error getting property"); +} diff --git a/src/xorg-utils.hpp b/src/xorg-utils.hpp new file mode 100644 index 0000000..b5916de --- /dev/null +++ b/src/xorg-utils.hpp @@ -0,0 +1,8 @@ +#ifndef STREAMING_AGENT_XORG_UTILS_HPP +#define STREAMING_AGENT_XORG_UTILS_HPP + +#include <X11/Xlib.h> + +int get_win_prop_int(Display *display, Window win, Atom atom); + +#endif // STREAMING_AGENT_XORG_UTILS_HPP -- 2.14.3 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel