[X2Go-Commits] [nx-libs] 46/108: Clipboard.c: add function for debugging output

git-admin at x2go.org git-admin at x2go.org
Fri Nov 9 20:35:41 CET 2018


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository nx-libs.

commit 6cdddadf9f9699d91c4ef647fa9302f557ade6e1
Author: Ulrich Sibiller <uli42 at gmx.de>
Date:   Thu Jun 7 23:40:51 2018 +0200

    Clipboard.c: add function for debugging output
---
 nx-X11/programs/Xserver/hw/nxagent/Clipboard.c | 116 ++++++++++++++++++++++++-
 1 file changed, 114 insertions(+), 2 deletions(-)

diff --git a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
index 5c82648..3c46ec3 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
@@ -157,6 +157,109 @@ void nxagentNotifyConvertFailure(ClientPtr client, Window requestor,
                                      Atom selection, Atom target, Time time);
 int nxagentSendNotify(xEvent *event);
 
+void nxagentPrintClipboardStat(char *);
+
+void nxagentPrintClipboardStat(char *header)
+{
+  #ifdef DEBUG
+  char *s =NULL;
+
+  fprintf(stderr, "/----- Clipboard internal status - %s -----\n", header);
+
+  fprintf(stderr, "  current time                    (Time) [%u]\n", GetTimeInMillis());
+  fprintf(stderr, "  agentClipboardStatus             (int) [%d]\n", agentClipboardStatus);
+  fprintf(stderr, "  clientAccum                      (int) [%d]\n", clientAccum);
+  fprintf(stderr, "  nxagentMaxSelections             (int) [%d]\n", nxagentMaxSelections);
+  fprintf(stderr, "  NumCurrentSelections             (int) [%d]\n", NumCurrentSelections);
+  fprintf(stderr, "  serverWindow                  (Window) [0x%x]\n", serverWindow);
+  fprintf(stderr, "  nxagentLastClipboardClient       (int) [%d]\n", nxagentLastClipboardClient);
+
+  fprintf(stderr, "  ClipboardMode                          ");
+  switch(nxagentOption(Clipboard))
+  {
+    case ClipboardBoth:    fprintf(stderr, "[Both]"); break;;
+    case ClipboardClient:  fprintf(stderr, "[Client]"); break;;
+    case ClipboardServer:  fprintf(stderr, "[Server]"); break;;
+    case ClipboardNone:    fprintf(stderr, "[None]"); break;;
+    default:               fprintf(stderr, "[UNKNOWN] (FAIL!)"); break;;
+  }
+  fprintf(stderr,"\n");
+
+  fprintf(stderr, "lastServer\n");
+  fprintf(stderr, "  lastServerRequestor           (Window) [0x%x]\n", lastServerRequestor);
+  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, lastServerProperty);
+  fprintf(stderr, "  lastServerProperty              (Atom) [% 4d][%s]\n", lastServerProperty, s);
+  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, lastServerTarget);
+  fprintf(stderr, "  lastServerTarget                (Atom) [% 4d][%s]\n", lastServerTarget, s);
+  fprintf(stderr, "  lastServerTime                  (Time) [%u]\n", lastServerTime);
+
+  fprintf(stderr, "lastClient\n");
+  fprintf(stderr, "  lastClientWindowPtr        (WindowPtr) [%p]\n", (void *)lastClientWindowPtr);
+  fprintf(stderr, "  lastClientClientPtr        (ClientPtr) [%p]\n", (void *)lastClientClientPtr);
+  fprintf(stderr, "  lastClientRequestor           (Window) [0x%x]\n", lastClientRequestor);
+  fprintf(stderr, "  lastClientProperty              (Atom) [% 4d][%s]\n", lastClientProperty, NameForAtom(lastClientProperty));
+  fprintf(stderr, "  lastClientSelection             (Atom) [% 4d][%s]\n", lastClientSelection, NameForAtom(lastClientSelection));
+  fprintf(stderr, "  lastClientTarget                (Atom) [% 4d][%s]\n", lastClientTarget, NameForAtom(lastClientTarget));
+  fprintf(stderr, "  lastClientTime                  (Time) [%u]\n", lastServerTime);
+  fprintf(stderr, "  lastClientReqTime               (Time) [%u]\n", lastServerTime);
+  fprintf(stderr, "  lastClientPropertySize (unsigned long) [%lu]\n", lastClientPropertySize);
+  fprintf(stderr, "  lastClientStage (ClientSelectionStage) [%d]", lastClientStage);
+  switch(lastClientStage)
+  {
+    case SelectionStageNone:      fprintf(stderr, "[None]"); break;;
+    case SelectionStageQuerySize: fprintf(stderr, "[QuerySize]"); break;;
+    case SelectionStageWaitSize:  fprintf(stderr, "[WaitSize]"); break;;
+    case SelectionStageQueryData: fprintf(stderr, "[QueryData]"); break;;
+    case SelectionStageWaitData:  fprintf(stderr, "[WaitData]"); break;;
+    default:                      fprintf(stderr, "[UNKNOWN] (FAIL!)"); break;;
+  }
+  fprintf(stderr,"\n");
+
+  fprintf(stderr, "PRIMARY\n");
+  fprintf(stderr, "  lastSelectionOwner[].client            [%p]\n", (void *)lastSelectionOwner[nxagentPrimarySelection].client);
+  fprintf(stderr, "  lastSelectionOwner[].window            [0x%x]\n", lastSelectionOwner[nxagentPrimarySelection].window);
+  fprintf(stderr, "  lastSelectionOwner[].windowPtr         [%p]\n", (void *)lastSelectionOwner[nxagentPrimarySelection].windowPtr);
+  fprintf(stderr, "  lastSelectionOwner[].lastTimeChanged   [%u]\n", lastSelectionOwner[nxagentPrimarySelection].lastTimeChanged);
+  fprintf(stderr, "  CurrentSelections[].client             [%p]\n", (void *)CurrentSelections[nxagentPrimarySelection].client);
+  fprintf(stderr, "  CurrentSelections[].window             [0x%x]\n", CurrentSelections[nxagentPrimarySelection].window);
+
+  fprintf(stderr, "CLIPBOARD\n");
+  fprintf(stderr, "  lastSelectionOwner[].client            [%p]\n", (void *)lastSelectionOwner[nxagentClipboardSelection].client);
+  fprintf(stderr, "  lastSelectionOwner[].window            [0x%x]\n", lastSelectionOwner[nxagentClipboardSelection].window);
+  fprintf(stderr, "  lastSelectionOwner[].windowPtr         [%p]\n", (void *)lastSelectionOwner[nxagentClipboardSelection].windowPtr);
+  fprintf(stderr, "  lastSelectionOwner[].lastTimeChanged   [%u]\n", lastSelectionOwner[nxagentClipboardSelection].lastTimeChanged);
+  fprintf(stderr, "  CurrentSelections[].client             [%p]\n", (void *)CurrentSelections[nxagentClipboardSelection].client);
+  fprintf(stderr, "  CurrentSelections[].window             [0x%x]\n", CurrentSelections[nxagentClipboardSelection].window);
+
+  fprintf(stderr, "Atoms (server side)\n");
+  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, serverTARGETS);
+  fprintf(stderr, "  serverTARGETS                          [% 4d][%s]\n", serverTARGETS, validateString(s));
+  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, serverTEXT);
+  fprintf(stderr, "  serverTEXT                             [% d][%s]\n", serverTEXT, s);
+  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, serverUTF8_STRING);
+  fprintf(stderr, "  serverUTF8_STRING                      [% 4d][%s]\n", serverUTF8_STRING, s);
+  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, serverCutProperty);
+  fprintf(stderr, "  serverCutProperty                      [% 4d][%s]\n", serverCutProperty, s);
+
+  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, nxagentClipboardAtom);
+  fprintf(stderr, "  nxagentClipboardAtom                   [% 4d][%s]\n", nxagentClipboardAtom, s);
+  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, nxagentTimestampAtom);
+  fprintf(stderr, "  nxagentTimestampAtom                   [% 4d][%s]\n", nxagentTimestampAtom, s);
+
+  fprintf(stderr, "Atoms (inside nxagent)\n");
+  fprintf(stderr, "  clientTARGETS                          [% 4d][%s]\n", clientTARGETS, NameForAtom(clientTARGETS));
+  fprintf(stderr, "  clientTEXT                             [% 4d][%s]\n", clientTEXT, NameForAtom(clientTEXT));
+  fprintf(stderr, "  clientCOMPOUND_TEXT                    [% 4d][%s]\n", clientCOMPOUND_TEXT, NameForAtom(clientCOMPOUND_TEXT));
+  fprintf(stderr, "  clientUTF8_STRING                      [% 4d][%s]\n", clientUTF8_STRING, NameForAtom(clientUTF8_STRING));
+  fprintf(stderr, "  clientCutProperty                      [% 4d][%s]\n", clientCutProperty, NameForAtom(clientCutProperty));
+  fprintf(stderr, "  nxagentLastRequestedSelection          [% 4d][%s]\n", nxagentLastRequestedSelection, NameForAtom(nxagentLastRequestedSelection));
+
+  fprintf(stderr, "\\------------------------------------------------------------------------------\n");
+
+  if (s) XFree(s); s = NULL;
+#endif
+}
+
 /*
  * This is from NXproperty.c.
  */
@@ -213,6 +316,8 @@ void nxagentClearClipboard(ClientPtr pClient, WindowPtr pWindow)
               (void *) pClient, (void *) pWindow);
   #endif
 
+  nxagentPrintClipboardStat("before nxagentClearClipboard");
+
   /*
    * Only for PRIMARY and CLIPBOARD selections.
    */
@@ -238,13 +343,14 @@ void nxagentClearClipboard(ClientPtr pClient, WindowPtr pWindow)
       lastServerRequestor = None;
     }
   }
- 
+
   if (pWindow == lastClientWindowPtr)
   {
     lastClientWindowPtr = NULL;
     lastClientStage = SelectionStageNone;
   }
 
+  nxagentPrintClipboardStat("after nxagentClearClipboard");
 }
 
 void nxagentClearSelection(XEvent *X)
@@ -255,6 +361,8 @@ void nxagentClearSelection(XEvent *X)
   fprintf(stderr, "nxagentClearSelection: Got called.\n");
   #endif
 
+  nxagentPrintClipboardStat("before nxagentClearSelection");
+
   if (agentClipboardStatus != 1 ||
           nxagentOption(Clipboard) == ClipboardServer)
   {
@@ -297,6 +405,7 @@ void nxagentClearSelection(XEvent *X)
 
   lastClientWindowPtr = NULL;
   lastClientStage = SelectionStageNone;
+  nxagentPrintClipboardStat("after nxagentClearSelection");
 }
 
 void nxagentRequestSelection(XEvent *X)
@@ -305,12 +414,14 @@ void nxagentRequestSelection(XEvent *X)
   int result;
   #endif
   int i = 0;
-  XSelectionEvent eventSelection;
+  XSelectionEvent eventSelection = {0};
 
   #ifdef DEBUG
   fprintf(stderr, "nxagentRequestSelection: Got called.\n");
   #endif
 
+  nxagentPrintClipboardStat("before nxagentRequestSelection");
+
   if (agentClipboardStatus != 1)
   {
     return;
@@ -517,6 +628,7 @@ FIXME: Do we need this?
       }
     }
   }
+  nxagentPrintClipboardStat("after nxagentRequestSelection");
 }
 
 void nxagentSendSelectionNotify(Atom property)

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list