aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Colascione2012-12-10 09:55:03 -0800
committerDaniel Colascione2012-12-10 09:55:03 -0800
commit78f9ea875a65686b5e300d73dbf22dd96ca29851 (patch)
treed30e965b537930a2c7ba999210ae56651562ac26 /src
parent322a542e6c13eb89b8abc302278e77684c1d6479 (diff)
downloademacs-78f9ea875a65686b5e300d73dbf22dd96ca29851.tar.gz
emacs-78f9ea875a65686b5e300d73dbf22dd96ca29851.zip
Move fix for bug#12993 to trunk
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog21
-rw-r--r--src/Makefile.in21
-rw-r--r--src/emacs.c8
-rw-r--r--src/unexw32.c16
-rw-r--r--src/w32fns.c4
-rw-r--r--src/w32gui.h3
6 files changed, 24 insertions, 49 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index be2d3dd6a6f..9d9c1fdaff5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,24 +1,3 @@
12012-12-10 Daniel Colascione <dancol@dancol.org>
2
3 * w32gui.h (hprevinst, lpCmdLine, nCmdShow): Remove unused
4 declarations.
5
6 * w32fns.c (cache_system_info): Initialize the global hinst
7 variable here so various initialization calls DTRT.
8
9 * unexw32.c (hprevinst, lpCmdLine, nCmdShow): Remove unused
10 variables.
11 (hinst): Remove unneeded extern declaration.
12 (_start): Remove initialization of above variables; remove
13 initialization of hinst, as cache_system_info now does that.
14
15 * emacs.c (main): Call cache_system_info early in startup; we
16 previously weren't calling it in Cygwin builds.
17
18 * Makefile.in (ntsource, WINDRES, W32_RES, W#@_RES_LINK): Teach
19 the autoconf build system how to compile a Windows resource file
20 and link it to Emacs.
21
222012-12-08 Jan Djärv <jan.h.d@swipnet.se> 12012-12-08 Jan Djärv <jan.h.d@swipnet.se>
23 2
24 * nsterm.m (fd_handler:): FD_ZERO fds (Bug#13103). 3 * nsterm.m (fd_handler:): FD_ZERO fds (Bug#13103).
diff --git a/src/Makefile.in b/src/Makefile.in
index 75624dc0631..c24e421bbbc 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -28,11 +28,9 @@ SHELL = /bin/sh
28# Here are the things that we expect ../configure to edit. 28# Here are the things that we expect ../configure to edit.
29# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH. 29# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
30srcdir = @srcdir@ 30srcdir = @srcdir@
31ntsource = $(srcdir)/../nt
32abs_builddir = @abs_builddir@ 31abs_builddir = @abs_builddir@
33VPATH = $(srcdir) 32VPATH = $(srcdir)
34CC = @CC@ 33CC = @CC@
35WINDRES = @WINDRES@
36CFLAGS = @CFLAGS@ 34CFLAGS = @CFLAGS@
37CPPFLAGS = @CPPFLAGS@ 35CPPFLAGS = @CPPFLAGS@
38LDFLAGS = @LDFLAGS@ 36LDFLAGS = @LDFLAGS@
@@ -268,13 +266,6 @@ W32_OBJ=@W32_OBJ@
268## --lwinspool if HAVE_W32, else empty. 266## --lwinspool if HAVE_W32, else empty.
269W32_LIBS=@W32_LIBS@ 267W32_LIBS=@W32_LIBS@
270 268
271## emacs.res if HAVE_W32
272W32_RES=@W32_RES@
273## If HAVE_W32, compiler arguments for including
274## the resource file in the binary.
275## XXX -Wl,-b -Wl,pe-i386 -Wl,emacs.res
276W32_RES_LINK=@W32_RES_LINK@
277
278## Empty if !HAVE_X_WINDOWS 269## Empty if !HAVE_X_WINDOWS
279## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT 270## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT
280## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE 271## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE
@@ -337,6 +328,7 @@ ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
337 @$(MKDEPDIR) 328 @$(MKDEPDIR)
338 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $< 329 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
339 330
331
340## lastfile must follow all files whose initialized data areas should 332## lastfile must follow all files whose initialized data areas should
341## be dumped as pure by dump-emacs. 333## be dumped as pure by dump-emacs.
342base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ 334base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
@@ -470,11 +462,9 @@ $(obj) $(otherobj): globals.h
470$(lib)/libgnu.a: $(config_h) 462$(lib)/libgnu.a: $(config_h)
471 cd $(lib) && $(MAKE) libgnu.a 463 cd $(lib) && $(MAKE) libgnu.a
472 464
473temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) \ 465temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) $(lib)/libgnu.a
474 $(lib)/libgnu.a $(W32_RES)
475 $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \ 466 $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \
476 -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES) \ 467 -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES)
477 $(W32_RES_LINK)
478 test "$(CANNOT_DUMP)" = "yes" || \ 468 test "$(CANNOT_DUMP)" = "yes" || \
479 test "X$(PAXCTL)" = X || $(PAXCTL) -r temacs$(EXEEXT) 469 test "X$(PAXCTL)" = X || $(PAXCTL) -r temacs$(EXEEXT)
480 470
@@ -515,14 +505,11 @@ $(OLDXMENU): $(OLDXMENU_TARGET)
515 505
516doc.o: buildobj.h 506doc.o: buildobj.h
517 507
518emacs.res: $(ntsource)/emacs.rc \
519 $(ntsource)/icons/emacs.ico \
520 $(ntsource)/emacs-x86.manifest
521 $(WINDRES) -O COFF -o $@ $(ntsource)/emacs.rc
522 508
523ns-app: emacs$(EXEEXT) 509ns-app: emacs$(EXEEXT)
524 cd ../nextstep && $(MAKE) $(MFLAGS) all 510 cd ../nextstep && $(MAKE) $(MFLAGS) all
525 511
512
526.PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean 513.PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean
527.PHONY: versionclean extraclean frc 514.PHONY: versionclean extraclean frc
528 515
diff --git a/src/emacs.c b/src/emacs.c
index 4f5044db1c5..f533c3ae983 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -40,7 +40,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
40#if defined WINDOWSNT || defined HAVE_NTGUI 40#if defined WINDOWSNT || defined HAVE_NTGUI
41#include "w32select.h" 41#include "w32select.h"
42#include "w32font.h" 42#include "w32font.h"
43#include "w32common.h"
44#endif 43#endif
45 44
46#if defined HAVE_NTGUI && defined CYGWIN 45#if defined HAVE_NTGUI && defined CYGWIN
@@ -721,13 +720,6 @@ main (int argc, char **argv)
721 } 720 }
722#endif 721#endif
723 722
724#if defined WINDOWSNT || defined HAVE_NTGUI
725 /* Set global variables used to detect Windows version. Do this as
726 early as possible. (unexw32.c calls this function as well, but
727 the additional call here is harmless.) */
728 cache_system_info ();
729#endif
730
731#ifdef RUN_TIME_REMAP 723#ifdef RUN_TIME_REMAP
732 if (initialized) 724 if (initialized)
733 run_time_remap (argv[0]); 725 run_time_remap (argv[0]);
diff --git a/src/unexw32.c b/src/unexw32.c
index ee1deb5f92e..1e591a78b73 100644
--- a/src/unexw32.c
+++ b/src/unexw32.c
@@ -85,6 +85,13 @@ DWORD_PTR extra_bss_size_static = 0;
85 85
86PIMAGE_SECTION_HEADER heap_section; 86PIMAGE_SECTION_HEADER heap_section;
87 87
88#ifdef HAVE_NTGUI
89extern HINSTANCE hinst;
90HINSTANCE hprevinst = NULL;
91LPSTR lpCmdLine = "";
92int nCmdShow = 0;
93#endif /* HAVE_NTGUI */
94
88/* Startup code for running on NT. When we are running as the dumped 95/* Startup code for running on NT. When we are running as the dumped
89 version, we need to bootstrap our heap and .bss section into our 96 version, we need to bootstrap our heap and .bss section into our
90 address space before we can actually hand off control to the startup 97 address space before we can actually hand off control to the startup
@@ -114,6 +121,15 @@ _start (void)
114 /* Prevent Emacs from being locked up (eg. in batch mode) when 121 /* Prevent Emacs from being locked up (eg. in batch mode) when
115 accessing devices that aren't mounted (eg. removable media drives). */ 122 accessing devices that aren't mounted (eg. removable media drives). */
116 SetErrorMode (SEM_FAILCRITICALERRORS); 123 SetErrorMode (SEM_FAILCRITICALERRORS);
124
125 /* Invoke the NT CRT startup routine now that our housecleaning
126 is finished. */
127#ifdef HAVE_NTGUI
128 /* determine WinMain args like crt0.c does */
129 hinst = GetModuleHandle (NULL);
130 lpCmdLine = GetCommandLine ();
131 nCmdShow = SW_SHOWDEFAULT;
132#endif
117 mainCRTStartup (); 133 mainCRTStartup ();
118} 134}
119 135
diff --git a/src/w32fns.c b/src/w32fns.c
index 90bbc61eec6..de5cee1d7a7 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -1828,6 +1828,7 @@ static LRESULT CALLBACK w32_wnd_proc (HWND, UINT, WPARAM, LPARAM);
1828static BOOL 1828static BOOL
1829w32_init_class (HINSTANCE hinst) 1829w32_init_class (HINSTANCE hinst)
1830{ 1830{
1831
1831 if (w32_unicode_gui) 1832 if (w32_unicode_gui)
1832 { 1833 {
1833 WNDCLASSW uwc; 1834 WNDCLASSW uwc;
@@ -7019,9 +7020,6 @@ cache_system_info (void)
7019 DWORD data; 7020 DWORD data;
7020 } version; 7021 } version;
7021 7022
7022 /* Cache the module handle of Emacs itself. */
7023 hinst = GetModuleHandle (NULL);
7024
7025 /* Cache the version of the operating system. */ 7023 /* Cache the version of the operating system. */
7026 version.data = GetVersion (); 7024 version.data = GetVersion ();
7027 w32_major_version = version.info.major; 7025 w32_major_version = version.info.major;
diff --git a/src/w32gui.h b/src/w32gui.h
index fe2bb2334b5..0da8de97f23 100644
--- a/src/w32gui.h
+++ b/src/w32gui.h
@@ -79,6 +79,9 @@ typedef struct _XImage
79#define FACE_DEFAULT (~0) 79#define FACE_DEFAULT (~0)
80 80
81extern HINSTANCE hinst; 81extern HINSTANCE hinst;
82extern HINSTANCE hprevinst;
83extern LPSTR lpCmdLine;
84extern int nCmdShow;
82 85
83/* Bit Gravity */ 86/* Bit Gravity */
84 87