changeset 5925:08cfc8f77fb6 cygwin

make space for long ptr, and store as such, for frame in WINDOW data, add a bit more debugging to debug-mswindow, Vin Shelton patch to fix M-x shell
author Henry Thompson <ht@markup.co.uk>
date Fri, 27 Feb 2015 17:41:20 +0000
parents 518bf1108435
children da02ba75e50a
files notes.txt src/console-msw-impl.h src/event-msw.c src/frame-msw.c src/process-unix.c
diffstat 5 files changed, 33 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/notes.txt	Fri Feb 06 09:08:37 2015 +0000
+++ b/notes.txt	Fri Feb 27 17:41:20 2015 +0000
@@ -256,3 +256,19 @@
 commit, make distclean, configure '--with-pdump=yes' '--with-modules=no' '--with-mule=yes' '--with-ncurses=yes' '--with-msw=yes' '--without-png' '--without-xpm' '--without-jpeg' '--with-cflags-debugging=-ggdb'
 
 No change -- -nw works, w/o -nw gives the same assertion failed.
+-----
+Trying again, make distclean followed by 
+ > 
+didn't work!, had to add --without-x (why???)
+------
+Force debug printing on by
+  debug_mswindows_events = 3;
+at the end of event-msw.c
+Added more printing, removed frame printing, from
+debug_output_mswin_message ditto
+Narrowed it down to the
+   qxeSetWindowLong (hwnd, XWL_FRAMEOBJ, (intptr_t)STORE_LISP_IN_VOID (frame_obj));
+at the end of mswindows_init_frame_1 in frame-msw.c
+a) Should be ...LongtPtr
+b) Not enough room allocated for a 64-bit long ptr -- fixed in
+   console-msw-impl.h
--- a/src/console-msw-impl.h	Fri Feb 06 09:08:37 2015 +0000
+++ b/src/console-msw-impl.h	Fri Feb 27 17:41:20 2015 +0000
@@ -270,8 +270,8 @@
 
 /* win32 window LONG indices */
 #define XWL_FRAMEOBJ	0
-#define XWL_COUNT	1	/* Number of LONGs that we use */
-#define MSWINDOWS_WINDOW_EXTRA_BYTES	(XWL_COUNT * 4)
+#define XWL_COUNT	1	/* Number of pointers that we use: HST changed from LONG to PTR */
+#define MSWINDOWS_WINDOW_EXTRA_BYTES	(XWL_COUNT * sizeof(intptr_t)) /* HST fixed to take account of 64-bit PTR */
 
 /*
  * Printer frame, aka printer job
--- a/src/event-msw.c	Fri Feb 06 09:08:37 2015 +0000
+++ b/src/event-msw.c	Fri Feb 27 17:41:20 2015 +0000
@@ -4965,8 +4965,9 @@
 
   if (debug_mswindows_events > 1)
     {
-      stderr_out (" wparam=%d lparam=%d hwnd=%p frame: ",
-		  (int)wParam, (int) lParam, hwnd);
+      stderr_out (" wparam=%d lparam=%d hwnd=%p frame: %d (%d)\n",
+		  (int)wParam, (int) lParam, hwnd, (int)qxeGetWindowLongPtr (hwnd, XWL_FRAMEOBJ),
+		  NILP (Vmswindows_frame_being_created));
       debug_print (frame);
       if (message_ == WM_WINDOWPOSCHANGED ||
           message_ == WM_WINDOWPOSCHANGING)
--- a/src/frame-msw.c	Fri Feb 06 09:08:37 2015 +0000
+++ b/src/frame-msw.c	Fri Feb 27 17:41:20 2015 +0000
@@ -271,7 +271,7 @@
 			   
   FRAME_MSWINDOWS_HANDLE (f) = hwnd;
 
-  qxeSetWindowLong (hwnd, XWL_FRAMEOBJ, (intptr_t)STORE_LISP_IN_VOID (frame_obj));
+  qxeSetWindowLongPtr (hwnd, XWL_FRAMEOBJ, (intptr_t)STORE_LISP_IN_VOID (frame_obj));
   FRAME_MSWINDOWS_DC (f) = GetDC (hwnd);
   SetTextAlign (FRAME_MSWINDOWS_DC (f), TA_BASELINE | TA_LEFT | TA_NOUPDATECP);
 
--- a/src/process-unix.c	Fri Feb 06 09:08:37 2015 +0000
+++ b/src/process-unix.c	Fri Feb 27 17:41:20 2015 +0000
@@ -1011,6 +1011,15 @@
       retry_close (fd);
   }
 
+  /* Disconnect the current controlling terminal, pursuant to
+     making the pty be the controlling terminal of the process.
+     Also put us in our own process group. */
+
+  /* disconnect_controlling_terminal was in unix_create_process,
+     moved per email from Vin Shelton of 28-Jan-15 to xemacs-beta */
+
+  disconnect_controlling_terminal ();
+
   /* we've wrapped execve; it translates its arguments */
   qxe_execve (new_argv[0], new_argv, env);
 
@@ -1120,12 +1129,8 @@
 	   cause I/O, and that, in turn, can confuse the X connection. */
 	begin_dont_check_for_quit();
 
-	/* Disconnect the current controlling terminal, pursuant to
-	   making the pty be the controlling terminal of the process.
-	   Also put us in our own process group. */
-
-	disconnect_controlling_terminal ();
-
+	/* disconnect_controlling_terminal was here, moved per 
+           email from Vin Shelton of 28-Jan-15 to xemacs-beta */
 	if (pty_flag)
 	  {
 	    /* Open the pty connection and make the pty's terminal