You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
6.3 KiB
149 lines
6.3 KiB
From 82931a1bcb39d5132910c7fb2ddc086c51d06662 Mon Sep 17 00:00:00 2001
|
|
From: John Wolfe <jwolfe@vmware.com>
|
|
Date: Mon, 19 Apr 2021 11:08:10 -0700
|
|
Subject: [PATCH] Fix issues using GCC 11 with gtk >= 3.20 and glib >=2.66.3
|
|
|
|
With glib2.0 releases >= 2.66.3, glib header files inside an
|
|
extern "C" block will encounter compilation errors. This has
|
|
impacted several OSS packages. Consumers of newer versions of glib2.0
|
|
must not include glib headers in an extern "C" block.
|
|
|
|
GTK 3.20 has deprecated gdk_display_get_device_manager(); using the
|
|
newer gdk_display_get_default_seat() when the GTK version is >= 3.20.
|
|
|
|
The return value from read() must be used to avoid an unused result
|
|
warning from the compiler. This can be avoided by using dummy retyping
|
|
in the case where the return value is not used or in this case, using
|
|
the returned value in a debug log message.
|
|
|
|
Pull Request: https://github.com/vmware/open-vm-tools/pull/505
|
|
Addresses: https://github.com/vmware/open-vm-tools/issues/500
|
|
Addresses: https://github.com/vmware/open-vm-tools/issues/509
|
|
---
|
|
open-vm-tools/AUTHORS | 3 +++
|
|
open-vm-tools/lib/include/tracer.hh | 4 +---
|
|
.../services/plugins/dndcp/copyPasteUIX11.cpp | 3 ++-
|
|
.../plugins/dndcp/dndGuest/dndCPTransportGuestRpc.hpp | 6 +++---
|
|
open-vm-tools/services/plugins/dndcp/dndUIX11.cpp | 11 +++++++++--
|
|
open-vm-tools/services/plugins/dndcp/dndcp.cpp | 7 ++++++-
|
|
6 files changed, 24 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/open-vm-tools/lib/include/tracer.hh b/open-vm-tools/lib/include/tracer.hh
|
|
index 697caedbc..e9ae892cb 100644
|
|
--- a/open-vm-tools/lib/include/tracer.hh
|
|
+++ b/open-vm-tools/lib/include/tracer.hh
|
|
@@ -1,5 +1,5 @@
|
|
/*********************************************************
|
|
- * Copyright (C) 2013-2017 VMware, Inc. All rights reserved.
|
|
+ * Copyright (C) 2013-2017,2021 VMware, Inc. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published
|
|
@@ -28,9 +28,7 @@
|
|
|
|
#include "vm_basic_defs.h"
|
|
|
|
-extern "C" {
|
|
#include "glib.h"
|
|
-}
|
|
|
|
|
|
#ifdef VMX86_DEVEL
|
|
diff --git a/open-vm-tools/services/plugins/dndcp/copyPasteUIX11.cpp b/open-vm-tools/services/plugins/dndcp/copyPasteUIX11.cpp
|
|
index 68212ab8b..080dc3d76 100644
|
|
--- a/open-vm-tools/services/plugins/dndcp/copyPasteUIX11.cpp
|
|
+++ b/open-vm-tools/services/plugins/dndcp/copyPasteUIX11.cpp
|
|
@@ -1,5 +1,5 @@
|
|
/*********************************************************
|
|
- * Copyright (C) 2009-2020 VMware, Inc. All rights reserved.
|
|
+ * Copyright (C) 2009-2021 VMware, Inc. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published
|
|
@@ -1666,6 +1666,7 @@ CopyPasteUIX11::FileBlockMonitorThread(void *arg) // IN
|
|
char buf[sizeof(VMBLOCK_FUSE_READ_RESPONSE)];
|
|
ssize_t size;
|
|
size = read(fd, buf, sizeof(VMBLOCK_FUSE_READ_RESPONSE));
|
|
+ g_debug("%s: Number of bytes read : %" FMTSZ "u\n", __FUNCTION__, size);
|
|
/*
|
|
* The current thread will block in read function until
|
|
* any other application accesses the file params->fileBlockName
|
|
diff --git a/open-vm-tools/services/plugins/dndcp/dndGuest/dndCPTransportGuestRpc.hpp b/open-vm-tools/services/plugins/dndcp/dndGuest/dndCPTransportGuestRpc.hpp
|
|
index 9b70984fc..424481baa 100644
|
|
--- a/open-vm-tools/services/plugins/dndcp/dndGuest/dndCPTransportGuestRpc.hpp
|
|
+++ b/open-vm-tools/services/plugins/dndcp/dndGuest/dndCPTransportGuestRpc.hpp
|
|
@@ -1,5 +1,5 @@
|
|
/*********************************************************
|
|
- * Copyright (C) 2010-2017 VMware, Inc. All rights reserved.
|
|
+ * Copyright (C) 2010-2017,2021 VMware, Inc. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published
|
|
@@ -31,13 +31,13 @@
|
|
|
|
#include "dnd.h"
|
|
|
|
-extern "C" {
|
|
#ifdef VMX86_TOOLS
|
|
#include "vmware/tools/guestrpc.h"
|
|
#else
|
|
+extern "C" {
|
|
#include "guest_rpc.h"
|
|
-#endif
|
|
}
|
|
+#endif
|
|
|
|
#define GUEST_RPC_CMD_STR_DND "dnd.transport"
|
|
#define GUEST_RPC_CMD_STR_CP "copypaste.transport"
|
|
diff --git a/open-vm-tools/services/plugins/dndcp/dndUIX11.cpp b/open-vm-tools/services/plugins/dndcp/dndUIX11.cpp
|
|
index 50c2bf5e1..03cf3e0d7 100644
|
|
--- a/open-vm-tools/services/plugins/dndcp/dndUIX11.cpp
|
|
+++ b/open-vm-tools/services/plugins/dndcp/dndUIX11.cpp
|
|
@@ -1,5 +1,5 @@
|
|
/*********************************************************
|
|
- * Copyright (C) 2009-2019 VMware, Inc. All rights reserved.
|
|
+ * Copyright (C) 2009-2021 VMware, Inc. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published
|
|
@@ -467,8 +467,15 @@ DnDUIX11::OnSrcDragBegin(const CPClipboard *clip, // IN
|
|
#ifndef GTK3
|
|
event.device = gdk_device_get_core_pointer();
|
|
#else
|
|
- GdkDeviceManager* manager = gdk_display_get_device_manager(gdk_window_get_display(event.window));
|
|
+# if GTK_MINOR_VERSION >= 20
|
|
+ GdkSeat *seat =
|
|
+ gdk_display_get_default_seat(gdk_window_get_display(event.window));
|
|
+ event.device = gdk_seat_get_pointer(seat);
|
|
+# else
|
|
+ GdkDeviceManager *manager =
|
|
+ gdk_display_get_device_manager(gdk_window_get_display(event.window));
|
|
event.device = gdk_device_manager_get_client_pointer(manager);
|
|
+# endif
|
|
#endif
|
|
event.x_root = mOrigin.get_x();
|
|
event.y_root = mOrigin.get_y();
|
|
diff --git a/open-vm-tools/services/plugins/dndcp/dndcp.cpp b/open-vm-tools/services/plugins/dndcp/dndcp.cpp
|
|
index d1013f4a7..bae4c94c7 100644
|
|
--- a/open-vm-tools/services/plugins/dndcp/dndcp.cpp
|
|
+++ b/open-vm-tools/services/plugins/dndcp/dndcp.cpp
|
|
@@ -1,5 +1,5 @@
|
|
/*********************************************************
|
|
- * Copyright (C) 2010-2019 VMware, Inc. All rights reserved.
|
|
+ * Copyright (C) 2010-2021 VMware, Inc. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published
|
|
@@ -31,6 +31,11 @@
|
|
|
|
#define G_LOG_DOMAIN "dndcp"
|
|
|
|
+/**
|
|
+ * Include glib.h before encountering any extern "C".
|
|
+ */
|
|
+#include <glib.h>
|
|
+
|
|
extern "C" {
|
|
#include "vmware/guestrpc/tclodefs.h"
|
|
#include "vmware/tools/plugin.h"
|