summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/windows/Makefile.am1
-rw-r--r--client/windows/platform.cpp15
-rw-r--r--configure.ac37
3 files changed, 52 insertions, 1 deletions
diff --git a/client/windows/Makefile.am b/client/windows/Makefile.am
index 0bd6e42d..ae104ff4 100644
--- a/client/windows/Makefile.am
+++ b/client/windows/Makefile.am
@@ -21,6 +21,7 @@ INCLUDES = \
$(CEGUI_CFLAGS) \
$(WARN_CFLAGS) \
$(SPICE_NONPKGCONFIG_CFLAGS) \
+ $(CXIMAGE_CFLAGS) \
$(NULL)
diff --git a/client/windows/platform.cpp b/client/windows/platform.cpp
index b6f1918e..c41c39ad 100644
--- a/client/windows/platform.cpp
+++ b/client/windows/platform.cpp
@@ -32,7 +32,14 @@
#include "playback.h"
#include "cursor.h"
#include "named_pipe.h"
+
+#ifndef DISABLE_CXIMAGE
+#define USE_CXIMAGE
+#endif
+
+#ifdef USE_CXIMAGE
#include "ximage.h"
+#endif
#include <spice/vd_agent.h>
int gdi_handlers = 0;
@@ -82,6 +89,7 @@ static ClipboardFormat clipboard_formats[] = {
#define clipboard_formats_count (sizeof(clipboard_formats) / sizeof(clipboard_formats[0]))
+#ifdef USE_CXIMAGE
typedef struct ImageType {
uint32_t type;
DWORD cximage_format;
@@ -91,6 +99,7 @@ static ImageType image_types[] = {
{VD_AGENT_CLIPBOARD_IMAGE_PNG, CXIMAGE_FORMAT_PNG},
{VD_AGENT_CLIPBOARD_IMAGE_BMP, CXIMAGE_FORMAT_BMP},
};
+#endif
static std::set<uint32_t> grab_types;
@@ -154,6 +163,7 @@ static int get_available_clipboard_types(uint32_t** types)
return count;
}
+#ifdef USE_CXIMAGE
static DWORD get_cximage_format(uint32_t type)
{
for (size_t i = 0; i < sizeof(image_types) / sizeof(image_types[0]); i++) {
@@ -163,6 +173,7 @@ static DWORD get_cximage_format(uint32_t type)
}
return 0;
}
+#endif
static LRESULT CALLBACK PlatformWinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
@@ -1005,6 +1016,7 @@ bool Platform::on_clipboard_notify(uint32_t type, const uint8_t* data, int32_t s
case VD_AGENT_CLIPBOARD_UTF8_TEXT:
clip_data = utf8_alloc((LPCSTR)data, size);
break;
+#ifdef USE_CXIMAGE
case VD_AGENT_CLIPBOARD_IMAGE_PNG:
case VD_AGENT_CLIPBOARD_IMAGE_BMP: {
DWORD cximage_format = get_cximage_format(type);
@@ -1013,6 +1025,7 @@ bool Platform::on_clipboard_notify(uint32_t type, const uint8_t* data, int32_t s
clip_data = image.CopyToHandle();
break;
}
+#endif
default:
LOG_INFO("Unsupported clipboard type %u", type);
return true;
@@ -1072,6 +1085,7 @@ bool Platform::on_clipboard_request(uint32_t type)
GlobalUnlock(clip_data);
break;
}
+#ifdef USE_CXIMAGE
case VD_AGENT_CLIPBOARD_IMAGE_PNG:
case VD_AGENT_CLIPBOARD_IMAGE_BMP: {
DWORD cximage_format = get_cximage_format(type);
@@ -1091,6 +1105,7 @@ bool Platform::on_clipboard_request(uint32_t type)
ret = true;
break;
}
+#endif
default:
LOG_INFO("Unsupported clipboard type %u", type);
}
diff --git a/configure.ac b/configure.ac
index e92d7d8f..5b20e5b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -378,6 +378,33 @@ AC_CACHE_CHECK([for supported warning flags], spice_cv_warn_cflags, [
WARN_CFLAGS="$spice_cv_warn_cflags"
SPICE_CFLAGS="$SPICE_CFLAGS $WARN_CFLAGS"
+# use ximage.h for win32 build if it is found (no package for mingw32 atm)
+if test $os_win32 == "yes" ; then
+ AC_MSG_CHECKING([for cximage])
+ AC_TRY_CPP(
+[#include <ximage.h>
+int main()
+{
+ return CXIMAGE_FORMAT_RAW;
+)}
+],[
+ AC_MSG_RESULT([found])
+ have_cximage="yes"
+]
+,[AC_MSG_RESULT([missing])
+ CXIMAGE_CFLAGS='-DDISABLE_CXIMAGE'
+ have_cximage="no"
+ ]
+)
+fi
+AC_SUBST(CXIMAGE_CFLAGS)
+
+# check for windres for mingw32 builds
+if test $os_win32 == "yes" ; then
+ AC_CHECK_PROGS(WINDRES,i686-pc-mingw32-windres mingw-windres mingw32-windres,false)
+ AC_SUBST(WINDRES)
+fi
+
# We only wish to enable attribute(warn_unused_result) if we can prevent
# gcc from generating thousands of warnings about the misapplication of the
# attribute to void functions and variables.
@@ -459,6 +486,14 @@ echo "
GUI: ${use_gui}
Smartcard: ${have_smartcard}
+"
+
+if test $os_win32 == "yes" ; then
+echo \
+" Copy & Paste Images: ${have_cximage}
+"
+fi
- Now type 'make' to build $PACKAGE
+echo \
+" Now type 'make' to build $PACKAGE
"