* Fixes for 64-bit Emacs on Snow Leopard
@ 2009-09-07 21:08 Erik Charlebois
2009-09-07 22:03 ` Chong Yidong
2009-09-07 23:26 ` David Reitter
0 siblings, 2 replies; 8+ messages in thread
From: Erik Charlebois @ 2009-09-07 21:08 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 690 bytes --]
I've posted the steps/fixes to get a 64-bit NS/Cocoa Emacs 23.1
working for Snow Leopard on my blog at http://blog.fac9.com/index.php/2009/08/30/building-a-64-bit-emacs-on-snow-leopard/
. I've been using it for a week without problems.
Feel free to roll those changes in, I haven't contributed to any GNU
projects before so I'm not really sure where to begin making a patch /
dealing with copyright assignment.
Which brings me to: is there a page somewhere with the steps on how to
get involved /w emacs dev, what the contribution protocols are, who
owns what area and such? I'm interested in improving Mac and Win32
support.
Erik Charlebois
erikcharlebois@gmail.com
[-- Attachment #2: Type: text/html, Size: 2101 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Fixes for 64-bit Emacs on Snow Leopard
2009-09-07 21:08 Fixes for 64-bit Emacs on Snow Leopard Erik Charlebois
@ 2009-09-07 22:03 ` Chong Yidong
2009-09-09 12:56 ` Adrian Robert
2009-09-07 23:26 ` David Reitter
1 sibling, 1 reply; 8+ messages in thread
From: Chong Yidong @ 2009-09-07 22:03 UTC (permalink / raw)
To: Erik Charlebois; +Cc: David Reitter, Adrian Robert, emacs-devel
Erik Charlebois <erikcharlebois@gmail.com> writes:
> I've posted the steps/fixes to get a 64-bit NS/Cocoa Emacs 23.1 working for
> Snow Leopard on my blog:
>
>> Steps to fix the 64-bit Emacs on Snow Leopard (configure –with-ns, make,
>> make install):
>
>> Undef HAVE_POSIX_MEMALIGN in the #ifdef temacs part of
>> src/s/darwin.h. posix_memalign does not call wind up calling the hooked
>> unexec_malloc, so you wind up with incorrect free calls.
>
> Feel free to roll those changes in, I haven't contributed to any GNU
> projects before so I'm not really sure where to begin making a patch /
> dealing with copyright assignment.
Could someone review this and check it in if it's the right thing to do?
(David or Adrian?)
> Which brings me to: is there a page somewhere with the steps on how to get
> involved /w emacs dev, what the contribution protocols are, who owns what area
> and such? I'm interested in improving Mac and Win32 support.
Please post patches to this mailing list. If you're interested in
posting significant changes, you'll need a copyright assignment; email
me privately, and I'll guide you through the process.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Fixes for 64-bit Emacs on Snow Leopard
2009-09-07 21:08 Fixes for 64-bit Emacs on Snow Leopard Erik Charlebois
2009-09-07 22:03 ` Chong Yidong
@ 2009-09-07 23:26 ` David Reitter
2009-09-08 8:14 ` Erik Charlebois
1 sibling, 1 reply; 8+ messages in thread
From: David Reitter @ 2009-09-07 23:26 UTC (permalink / raw)
To: Erik Charlebois; +Cc: emacs-devel
Hi Erik,
On Sep 7, 2009, at 5:08 PM, Erik Charlebois wrote:
> I've posted the steps/fixes to get a 64-bit NS/Cocoa Emacs 23.1
> working for Snow Leopard on my blog at http://blog.fac9.com/index.php/2009/08/30/building-a-64-bit-emacs-on-snow-leopard/
> . I've been using it for a week without problems.
Thanks, that's great news.
Regarding your point 5: I did not redefine CGFloat when I tried to
address these things; I'm not sure if it is necessary. You might be
right.
See this file
http://github.com/davidswelt/aquamacs-emacs/blob/874784331f6e1bcfe319823616067bcf2432c29a/src/nsgui.h
Would you be willing to post a patch with all of your changes?
Thanks again
- David
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Fixes for 64-bit Emacs on Snow Leopard
@ 2009-09-08 5:18 Eddie Hillenbrand
0 siblings, 0 replies; 8+ messages in thread
From: Eddie Hillenbrand @ 2009-09-08 5:18 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 270 bytes --]
Hi,
Thanks to Erik Charlebois I was able to create a patch that would get
Emacs.app to build on Snow Leopard.
I did not use all of his changes and there are still many warnings,
but Emacs.app at least builds.
The patch is attached. All credit goes to Erik! Yay!
[-- Attachment #2: emacs-app-snow-leopard.patch --]
[-- Type: application/octet-stream, Size: 5589 bytes --]
diff --git a/src/dbusbind.c b/src/dbusbind.c
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -1247,7 +1247,7 @@
CHECK_STRING (service);
GCPRO3 (bus, serial, service);
- XD_DEBUG_MESSAGE ("%d %s ", XUINT (serial), SDATA (service));
+ XD_DEBUG_MESSAGE ("%ld %s ", XUINT (serial), SDATA (service));
/* Open a connection to the bus. */
connection = xd_initialize (bus);
@@ -1341,7 +1341,7 @@
CHECK_STRING (service);
GCPRO3 (bus, serial, service);
- XD_DEBUG_MESSAGE ("%d %s ", XUINT (serial), SDATA (service));
+ XD_DEBUG_MESSAGE ("%ld %s ", XUINT (serial), SDATA (service));
/* Open a connection to the bus. */
connection = xd_initialize (bus);
diff --git a/src/font.c b/src/font.c
--- a/src/font.c
+++ b/src/font.c
@@ -1357,7 +1357,7 @@
{
f[XLFD_AVGWIDTH_INDEX] = alloca (11);
len += sprintf (f[XLFD_AVGWIDTH_INDEX],
- "%d", XINT (AREF (font, FONT_AVGWIDTH_INDEX))) + 1;
+ "%ld", XINT (AREF (font, FONT_AVGWIDTH_INDEX))) + 1;
}
else
f[XLFD_AVGWIDTH_INDEX] = "*", len += 2;
@@ -1673,7 +1673,7 @@
}
if (INTEGERP (AREF (font, FONT_DPI_INDEX)))
- len += sprintf (work, ":dpi=%d", XINT (AREF (font, FONT_DPI_INDEX)));
+ len += sprintf (work, ":dpi=%ld", XINT (AREF (font, FONT_DPI_INDEX)));
if (INTEGERP (AREF (font, FONT_SPACING_INDEX)))
len += strlen (":spacing=100");
if (INTEGERP (AREF (font, FONT_AVGWIDTH_INDEX)))
@@ -1686,7 +1686,7 @@
if (STRINGP (val))
len += SBYTES (val);
else if (INTEGERP (val))
- len += sprintf (work, "%d", XINT (val));
+ len += sprintf (work, "%ld", XINT (val));
else if (SYMBOLP (val))
len += (NILP (val) ? 5 : 4); /* for "false" or "true" */
}
@@ -1713,9 +1713,9 @@
p += sprintf (p, ":%s=%s", style_names[i],
SDATA (SYMBOL_NAME (styles[i])));
if (INTEGERP (AREF (font, FONT_DPI_INDEX)))
- p += sprintf (p, ":dpi=%d", XINT (AREF (font, FONT_DPI_INDEX)));
+ p += sprintf (p, ":dpi=%ld", XINT (AREF (font, FONT_DPI_INDEX)));
if (INTEGERP (AREF (font, FONT_SPACING_INDEX)))
- p += sprintf (p, ":spacing=%d", XINT (AREF (font, FONT_SPACING_INDEX)));
+ p += sprintf (p, ":spacing=%ld", XINT (AREF (font, FONT_SPACING_INDEX)));
if (INTEGERP (AREF (font, FONT_AVGWIDTH_INDEX)))
{
if (XINT (AREF (font, FONT_AVGWIDTH_INDEX)) == 0)
diff --git a/src/nsfns.m b/src/nsfns.m
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1772,7 +1772,7 @@
{
check_ns ();
#ifdef NS_IMPL_COCOA
- PSFlush ();
+ /*PSFlush ();*/
#endif
/*ns_delete_terminal (dpyinfo->terminal); */
[NSApp terminate: NSApp];
diff --git a/src/nsfont.m b/src/nsfont.m
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -245,7 +245,10 @@
return w;
}
#endif
- w = [sfont widthOfString: cstr];
+ NSDictionary *attrsDictionary =
+ [NSDictionary dictionaryWithObject:sfont
+ forKey:NSFontAttributeName];
+ w = [cstr sizeWithAttributes:attrsDictionary].width;
return max (w, 2.0);
}
diff --git a/src/nsgui.h b/src/nsgui.h
--- a/src/nsgui.h
+++ b/src/nsgui.h
@@ -129,12 +129,13 @@
} XRectangle;
#ifndef __OBJC__
-typedef struct _NSPoint { float x, y; } NSPoint;
-typedef struct _NSSize { float width, height; } NSSize;
+typedef double CGFloat;
+typedef struct _NSPoint { CGFloat x, y; } NSPoint;
+typedef struct _NSSize { CGFloat width, height; } NSSize;
typedef struct _NSRect { NSPoint origin; NSSize size; } NSRect;
#endif
-#define NativeRectangle struct _NSRect
+#define NativeRectangle NSRect
#define CONVERT_TO_XRECT(xr, nr) \
((xr).x = (nr).origin.x, \
diff --git a/src/nsterm.m b/src/nsterm.m
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1481,7 +1481,7 @@
Convert a color to a lisp string with the RGB equivalent
-------------------------------------------------------------------------- */
{
- float red, green, blue, alpha, gray;
+ CGFloat red, green, blue, alpha, gray;
char buf[1024];
const char *str;
NSTRACE (ns_color_to_lisp);
@@ -1523,7 +1523,7 @@
and set color_def pixel to the resulting index.
-------------------------------------------------------------------------- */
{
- float r, g, b, a;
+ CGFloat r, g, b, a;
[((NSColor *)col) getRed: &r green: &g blue: &b alpha: &a];
color_def->red = r * 65535;
@@ -5833,15 +5833,18 @@
em_portion = portion;
em_whole = whole;
- if (portion >= whole)
- [self setFloatValue: 0.0 knobProportion: 1.0];
+ if (portion >= whole) {
+ [self setDoubleValue: 0.0];
+ [self setKnobProportion: 1.0];
+ }
else
{
float pos, por;
portion = max ((float)whole*min_portion/pixel_height, portion);
pos = (float)position / (whole - portion);
por = (float)portion/whole;
- [self setFloatValue: pos knobProportion: por];
+ [self setDoubleValue: pos];
+ [self setKnobProportion: por];
}
#ifdef NS_IMPL_GNUSTEP
[self display];
@@ -5946,7 +5949,7 @@
case NSScrollerKnobSlot: /* GNUstep-only */
last_hit_part = scroll_bar_move_ratio; break;
default: /* NSScrollerNoPart? */
- fprintf (stderr, "EmacsScoller-mouseDown: unexpected part %d\n", part);
+ fprintf (stderr, "EmacsScoller-mouseDown: unexpected part %ld\n", part);
return;
}
diff --git a/src/process.c b/src/process.c
--- a/src/process.c
+++ b/src/process.c
@@ -1522,7 +1522,7 @@
insert_string ("?");
if (INTEGERP (speed))
{
- sprintf (tembuf, " at %d b/s", XINT (speed));
+ sprintf (tembuf, " at %ld b/s", XINT (speed));
insert_string (tembuf);
}
insert_string (")\n");
[-- Attachment #3: Type: text/plain, Size: 1 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Fixes for 64-bit Emacs on Snow Leopard
2009-09-07 23:26 ` David Reitter
@ 2009-09-08 8:14 ` Erik Charlebois
2009-09-08 17:38 ` CHENG Gao
2009-09-09 7:32 ` Erik Charlebois
0 siblings, 2 replies; 8+ messages in thread
From: Erik Charlebois @ 2009-09-08 8:14 UTC (permalink / raw)
To: David Reitter; +Cc: emacs-devel
[-- Attachment #1: 0001-Fixes-to-get-a-working-64-bit-Emacs-on-OS-X-10.6.patch --]
[-- Type: application/octet-stream, Size: 21123 bytes --]
From 1f11770e68581826091fbf24a60fd3f7d0259c52 Mon Sep 17 00:00:00 2001
From: Erik Charlebois <erikc@ermac.local>
Date: Tue, 8 Sep 2009 00:44:33 -0700
Subject: [PATCH 1/2] Fixes to get a working 64-bit Emacs on OS X 10.6.
---
lib-src/movemail.c | 2 +-
src/ChangeLog | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
src/emacs.c | 2 +-
src/font.c | 11 ++++++-----
| 2 +-
src/nsfns.m | 4 ++--
src/nsfont.m | 44 ++++++++++++++++++++++++++++++++------------
src/nsgui.h | 18 +++++++++++++++---
src/nsimage.m | 4 ++--
| 6 +++---
src/nsterm.h | 15 +++++++++++----
src/nsterm.m | 31 ++++++++++++++++++++++---------
src/process.c | 2 +-
src/unexmacosx.c | 4 ++--
14 files changed, 151 insertions(+), 46 deletions(-)
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 732f8dd..2feaae8 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -622,7 +622,7 @@ error (s1, s2, s3)
else if (s2)
fprintf (stderr, s1, s2);
else
- fprintf (stderr, s1);
+ fputs (s1, stderr);
fprintf (stderr, "\n");
}
diff --git a/src/ChangeLog b/src/ChangeLog
index fdbe825..fa355da 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,55 @@
+2009-09-08 Erik Charlebois <erikcharlebois@gmail.com>
+
+ * movemail.c (error): Change fprintf to fputs to fix warning.
+
+ * emacs.c (main): Remove extra format specifier to fix warning.
+
+ * font.c (font_unparse_xlfd): Print EMACS_INT with %ld.
+ (font_unparse_fcname): Print EMACS_INT with %ld.
+
+ * menu.c (find_and_return_menu_selection): Fix truncation warning.
+
+ * nsfns.m (x-close-connection): PSFlush does not exist on 64-bit Cocoa.
+ (xw-color-values): Use CGFloat instead of float.
+
+ * nsfont.m (ns_char_width): Use sizeWithAttributes: instead of
+ widthOfString:, which does no exist in 64-bit Cocoa.
+ (ns_findfonts): Print EMACS_INT with %ld.
+ (nsfont_list_family): Print EMACS_INT with %ld.
+ (nsfont_open): Use Core Text for OS X 10.5 and later.
+ (nsfont_close): Release Core Text resource.
+ (ns_uni_to_glyphs): Use NSUInteger when calling Cocoa APIs.
+ (layoutOptions): Use NSUInteger in method signature.
+ (insertGlyphs): Use NSUIntger in method signature.
+ (setIntAttribute): Use NSInteger and NSUInteger in method signature.
+
+ * nsgui.h: Add typedefs for NSUInteger, NSInteger and CGFloat for
+ pre-10.5 OS X and GNUstep.
+
+ * nsimage.m (setXBMColor): Use CGFloat for calls to Cocoa.
+ (getPixelAtX): Use CGFloat for calls to Cocoa.
+
+ * nsmenu.m (addItemWithWidgetValue): Use NSInteger for call to Cocoa.
+ (fillWithWidgetValue): sizeToFit is deprecated (does nothing). Remove
+ call for OS X 10.5 and later.
+ (initWithContentRect): Use NSUInteger in method signature.
+
+ * nsterm.h: Add Delegate protocols to interfaces to fix warnings.
+ Use Core Text on OS X 10.5 and later.
+
+ * nsterm.m (mouseDown): Remove redundant leading 0s in format specifier.
+ (ns_query_color): Use CGFloat for calls to Cocoa.
+ (characterIndexForPoint): Use NUSInteger in method signature.
+ (draggingEntered): Use NSDragOperation in method signature.
+ (scrollerWidth): Use CGFloat in method signature.
+ (setPosition): Use setDoubleValue: and setKnobProportion: on 10.5 and
+ later since setFloatVAlue:knobProportion: is deprecated.
+ (mouseDown): Use %ld to print NSScrollerPart.
+
+ * process.c (list_processes_1): Use %ld to print EMACS_INT.
+
+ * unexmacosx.c (read_load_commands): Use %ld to print vm_address_t.
+
2009-09-04 Jan Djärv <jan.h.d@swipnet.se>
* xterm.c (x_focus_changed): If we get a focusout and pointer
diff --git a/src/emacs.c b/src/emacs.c
index 2c14be5..44ed9ce 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1181,7 +1181,7 @@ main (int argc, char **argv)
argv[skip_args] = fdStr;
execv (argv[0], argv);
- fprintf (stderr, "emacs daemon: exec failed: %d\t%d\n", errno);
+ fprintf (stderr, "emacs daemon: exec failed: %d\n", errno);
exit (1);
}
diff --git a/src/font.c b/src/font.c
index cfc4852..7571a00 100644
--- a/src/font.c
+++ b/src/font.c
@@ -1357,7 +1357,7 @@ font_unparse_xlfd (font, pixel_size, name, nbytes)
{
f[XLFD_AVGWIDTH_INDEX] = alloca (11);
len += sprintf (f[XLFD_AVGWIDTH_INDEX],
- "%d", XINT (AREF (font, FONT_AVGWIDTH_INDEX))) + 1;
+ "%ld", (long) XINT (AREF (font, FONT_AVGWIDTH_INDEX))) + 1;
}
else
f[XLFD_AVGWIDTH_INDEX] = "*", len += 2;
@@ -1673,7 +1673,7 @@ font_unparse_fcname (font, pixel_size, name, nbytes)
}
if (INTEGERP (AREF (font, FONT_DPI_INDEX)))
- len += sprintf (work, ":dpi=%d", XINT (AREF (font, FONT_DPI_INDEX)));
+ len += sprintf (work, ":dpi=%ld", (long) XINT (AREF (font, FONT_DPI_INDEX)));
if (INTEGERP (AREF (font, FONT_SPACING_INDEX)))
len += strlen (":spacing=100");
if (INTEGERP (AREF (font, FONT_AVGWIDTH_INDEX)))
@@ -1686,7 +1686,7 @@ font_unparse_fcname (font, pixel_size, name, nbytes)
if (STRINGP (val))
len += SBYTES (val);
else if (INTEGERP (val))
- len += sprintf (work, "%d", XINT (val));
+ len += sprintf (work, "%ld", (long) XINT (val));
else if (SYMBOLP (val))
len += (NILP (val) ? 5 : 4); /* for "false" or "true" */
}
@@ -1713,9 +1713,10 @@ font_unparse_fcname (font, pixel_size, name, nbytes)
p += sprintf (p, ":%s=%s", style_names[i],
SDATA (SYMBOL_NAME (styles[i])));
if (INTEGERP (AREF (font, FONT_DPI_INDEX)))
- p += sprintf (p, ":dpi=%d", XINT (AREF (font, FONT_DPI_INDEX)));
+ p += sprintf (p, ":dpi=%ld", (long) XINT (AREF (font, FONT_DPI_INDEX)));
if (INTEGERP (AREF (font, FONT_SPACING_INDEX)))
- p += sprintf (p, ":spacing=%d", XINT (AREF (font, FONT_SPACING_INDEX)));
+ p += sprintf (p, ":spacing=%ld",
+ (long) XINT (AREF (font, FONT_SPACING_INDEX)));
if (INTEGERP (AREF (font, FONT_AVGWIDTH_INDEX)))
{
if (XINT (AREF (font, FONT_AVGWIDTH_INDEX)) == 0)
--git a/src/menu.c b/src/menu.c
index 940986f..23a7013 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1005,7 +1005,7 @@ find_and_return_menu_selection (FRAME_PTR f, int keymaps, void *client_data)
{
entry
= XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_VALUE];
- if ((int) (EMACS_INT)client_data == (int)(&XVECTOR (menu_items)->contents[i]))
+ if ((EMACS_INT)client_data == (EMACS_INT)(&XVECTOR (menu_items)->contents[i]))
{
if (keymaps != 0)
{
diff --git a/src/nsfns.m b/src/nsfns.m
index 136ae03..f941a16 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1771,7 +1771,7 @@ The argument DISPLAY is currently ignored. */)
Lisp_Object display;
{
check_ns ();
-#ifdef NS_IMPL_COCOA
+#if defined(NS_IMPL_COCOA) && !defined(_LP64)
PSFlush ();
#endif
/*ns_delete_terminal (dpyinfo->terminal); */
@@ -2237,7 +2237,7 @@ DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
Lisp_Object color, frame;
{
NSColor * col;
- float red, green, blue, alpha;
+ CGFloat red, green, blue, alpha;
check_ns ();
CHECK_STRING (color);
diff --git a/src/nsfont.m b/src/nsfont.m
index 46c50aa..c141fa4 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -245,7 +245,10 @@ ns_char_width (NSFont *sfont, int c)
return w;
}
#endif
- w = [sfont widthOfString: cstr];
+ NSDictionary *attrsDictionary =
+ [NSDictionary dictionaryWithObject: sfont
+ forKey: NSFontAttributeName];
+ w = [cstr sizeWithAttributes: attrsDictionary].width;
return max (w, 2.0);
}
@@ -517,7 +520,8 @@ ns_findfonts (Lisp_Object font_spec, BOOL isMatch)
return ns_fallback_entity ();
if (NSFONT_TRACE)
- fprintf (stderr, " Returning %d entities.\n", XINT (Flength (list)));
+ fprintf (stderr, " Returning %ld entities.\n",
+ (long) XINT (Flength (list)));
return list;
}
@@ -623,8 +627,8 @@ nsfont_list_family (Lisp_Object frame)
/* FIXME: escape the name? */
if (NSFONT_TRACE)
- fprintf (stderr, "nsfont: list families returning %d entries\n",
- XINT (Flength (list)));
+ fprintf (stderr, "nsfont: list families returning %ld entries\n",
+ (long) XINT (Flength (list)));
return list;
}
@@ -843,14 +847,27 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
((CFStringRef)@"Monaco", kATSOptionFlagsDefault);
}
}
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ font_info->ctfont =
+ CTFontCreateWithPlatformFont (atsFont, 0.0f, NULL, NULL);
+ font_info->cgfont = CTFontCopyGraphicsFont (font_info->ctfont, NULL);
+#else
font_info->cgfont = CGFontCreateWithPlatformFont ((void*)&atsFont);
+#endif
}
#endif
/* set up metrics portion of font struct */
font->ascent = [sfont ascender];
font->descent = -[sfont descender];
- font->min_width = [sfont widthOfString: @"|"]; /* FIXME */
+
+ /* FIXME */
+ NSDictionary *attrsDictionary =
+ [NSDictionary dictionaryWithObject: sfont
+ forKey: NSFontAttributeName];
+ font->min_width = [@"|" sizeWithAttributes: attrsDictionary].width;
+
font->space_width = lrint (ns_char_width (sfont, ' '));
font->average_width = lrint (font_info->width);
font->max_width = lrint (font_info->max_bounds.width);
@@ -888,6 +905,9 @@ nsfont_close (FRAME_PTR f, struct font *font)
[font_info->nsfont release];
#ifdef NS_IMPL_COCOA
CGFontRelease (font_info->cgfont);
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ CFRelease (font_info->ctfont);
+#endif
#endif
xfree (font_info->name);
xfree (font_info);
@@ -1308,7 +1328,7 @@ ns_uni_to_glyphs (struct nsfont_info *font_info, unsigned char block)
NSGlyphGenerator *glyphGenerator = [NSGlyphGenerator sharedGlyphGenerator];
/*NSCharacterSet *coveredChars = [nsfont coveredCharacterSet]; */
unsigned int numGlyphs = [font_info->nsfont numberOfGlyphs];
- unsigned int gInd =0, cInd =0;
+ NSUInteger gInd =0, cInd =0;
[glyphStorage setString: allChars font: font_info->nsfont];
[glyphGenerator generateGlyphsForGlyphStorage: glyphStorage
@@ -1439,7 +1459,7 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
}
/* NSGlyphStorage protocol */
-- (unsigned int)layoutOptions
+- (NSUInteger)layoutOptions
{
return 0;
}
@@ -1449,9 +1469,9 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
return attrStr;
}
-- (void)insertGlyphs: (const NSGlyph *)glyphs length: (unsigned int)length
- forStartingGlyphAtIndex: (unsigned int)glyphIndex
- characterIndex: (unsigned int)charIndex
+- (void)insertGlyphs: (const NSGlyph *)glyphs length: (NSUInteger)length
+ forStartingGlyphAtIndex: (NSUInteger)glyphIndex
+ characterIndex: (NSUInteger)charIndex
{
len = glyphIndex+length;
for (i =glyphIndex; i<len; i++)
@@ -1460,8 +1480,8 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
maxGlyph = len;
}
-- (void)setIntAttribute: (int)attributeTag value: (int)val
- forGlyphAtIndex: (unsigned)glyphIndex
+- (void)setIntAttribute: (NSInteger)attributeTag value: (NSInteger)val
+ forGlyphAtIndex: (NSUInteger)glyphIndex
{
return;
}
diff --git a/src/nsgui.h b/src/nsgui.h
index 9bf6be6..5594b7b 100644
--- a/src/nsgui.h
+++ b/src/nsgui.h
@@ -128,13 +128,25 @@ typedef struct {
unsigned width, height;
} XRectangle;
+#if !defined(__OBJC__) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
+#ifdef _LP64
+typedef unsigned long NSUInteger;
+typedef long NSInteger;
+typedef double CGFloat;
+#else
+typedef unsigned int NSUInteger;
+typedef int NSInteger;
+typedef float CGFloat;
+#endif
+#endif
+
#ifndef __OBJC__
-typedef struct _NSPoint { float x, y; } NSPoint;
-typedef struct _NSSize { float width, height; } NSSize;
+typedef struct _NSPoint { CGFloat x, y; } NSPoint;
+typedef struct _NSSize { CGFloat width, height; } NSSize;
typedef struct _NSRect { NSPoint origin; NSSize size; } NSRect;
#endif
-#define NativeRectangle struct _NSRect
+#define NativeRectangle NSRect
#define CONVERT_TO_XRECT(xr, nr) \
((xr).x = (nr).origin.x, \
diff --git a/src/nsimage.m b/src/nsimage.m
index 9ef7ad3..87499b0 100644
--- a/src/nsimage.m
+++ b/src/nsimage.m
@@ -329,7 +329,7 @@ static EmacsImage *ImageList = nil;
NSSize s = [self size];
int len = (int) s.width * s.height;
unsigned char *planes[5];
- float r, g, b, a;
+ CGFloat r, g, b, a;
NSColor *rgbColor;
if (bmRep == nil || color == nil)
@@ -431,7 +431,7 @@ static EmacsImage *ImageList = nil;
else if (onTiger)
{
NSColor *color = [bmRep colorAtX: x y: y];
- float r, g, b, a;
+ CGFloat r, g, b, a;
[color getRed: &r green: &g blue: &b alpha: &a];
return ((int)(a * 255.0) << 24)
| ((int)(r * 255.0) << 16) | ((int)(g * 255.0) << 8)
--git a/src/nsmenu.m b/src/nsmenu.m
index 0518466..e8549b4 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -656,7 +656,7 @@ name_is_separator (name)
else
[item setState: NSOffState];
- [item setTag: (int)wv->call_data];
+ [item setTag: (NSInteger)wv->call_data];
}
return item;
@@ -708,7 +708,7 @@ name_is_separator (name)
#ifdef NS_IMPL_GNUSTEP
if ([[self window] isVisible])
[self sizeToFit];
-#else
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
if ([self supermenu] == nil)
[self sizeToFit];
#endif
@@ -1611,7 +1611,7 @@ ns_popup_dialog (Lisp_Object position, Lisp_Object contents, Lisp_Object header)
#define TEXTHEIGHT 20.0
#define MINCELLWIDTH 90.0
-- initWithContentRect: (NSRect)contentRect styleMask: (unsigned int)aStyle
+- initWithContentRect: (NSRect)contentRect styleMask: (NSUInteger)aStyle
backing: (NSBackingStoreType)backingType defer: (BOOL)flag
{
NSSize spacing = {SPACER, SPACER};
diff --git a/src/nsterm.h b/src/nsterm.h
index 7375e3c..46335d9 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -54,7 +54,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
@class EmacsToolbar;
-@interface EmacsView : NSView <NSTextInput>
+@interface EmacsView : NSView <NSTextInput, NSWindowDelegate>
{
char *old_title;
BOOL windowClosing;
@@ -104,7 +104,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
========================================================================== */
-@interface EmacsMenu : NSMenu
+@interface EmacsMenu : NSMenu <NSMenuDelegate>
{
struct frame *frame;
unsigned long keyEquivModMask;
@@ -131,7 +131,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
@class EmacsImage;
-@interface EmacsToolbar : NSToolbar
+@interface EmacsToolbar : NSToolbar <NSToolbarDelegate>
{
EmacsView *emacsView;
NSMutableDictionary *identifierToItem;
@@ -174,7 +174,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
- (Lisp_Object)runDialogAt: (NSPoint)p;
@end
-@interface EmacsTooltip : NSObject
+@interface EmacsTooltip : NSObject <NSWindowDelegate>
{
NSWindow *win;
NSTextField *textField;
@@ -420,9 +420,16 @@ struct nsfont_info
#else /* GNUstep or OS X < 10.3 */
void *cgfont;
#endif
+ /* ctFont is used only on OS X 10.5+ */
+#if defined (NS_IMPL_COCOA) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
+ CTFontRef ctfont;
+#else /* GNUstep or OS X < 10.5 */
+ void *ctfont;
+#endif
#else /* ! OBJC */
void *nsfont;
void *cgfont;
+ void *ctfont;
#endif
char bold, ital; /* convenience flags */
char synthItal;
diff --git a/src/nsterm.m b/src/nsterm.m
index 5a58f1d..233f699 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1481,7 +1481,7 @@ ns_color_to_lisp (NSColor *col)
Convert a color to a lisp string with the RGB equivalent
-------------------------------------------------------------------------- */
{
- float red, green, blue, alpha, gray;
+ CGFloat red, green, blue, alpha, gray;
char buf[1024];
const char *str;
NSTRACE (ns_color_to_lisp);
@@ -1501,13 +1501,13 @@ ns_color_to_lisp (NSColor *col)
{
[[col colorUsingColorSpaceName: NSCalibratedWhiteColorSpace]
getWhite: &gray alpha: &alpha];
- snprintf (buf, sizeof (buf), "#%02.2lx%02.2lx%02.2lx",
+ snprintf (buf, sizeof (buf), "#%2.2lx%2.2lx%2.2lx",
lrint (gray * 0xff), lrint (gray * 0xff), lrint (gray * 0xff));
UNBLOCK_INPUT;
return build_string (buf);
}
- snprintf (buf, sizeof (buf), "#%02.2lx%02.2lx%02.2lx",
+ snprintf (buf, sizeof (buf), "#%2.2lx%2.2lx%2.2lx",
lrint (red*0xff), lrint (green*0xff), lrint (blue*0xff));
UNBLOCK_INPUT;
@@ -1523,7 +1523,7 @@ ns_query_color(void *col, XColor *color_def, int setPixel)
and set color_def pixel to the resulting index.
-------------------------------------------------------------------------- */
{
- float r, g, b, a;
+ CGFloat r, g, b, a;
[((NSColor *)col) getRed: &r green: &g blue: &b alpha: &a];
color_def->red = r * 65535;
@@ -4741,7 +4741,7 @@ extern void update_window_cursor (struct window *w, int on);
return NSMakeRange (NSNotFound, 0);
}
-- (unsigned int)characterIndexForPoint: (NSPoint)thePoint
+- (NSUInteger)characterIndexForPoint: (NSPoint)thePoint
{
if (NS_KEYLOG)
NSLog (@"characterIndexForPoint request");
@@ -5418,7 +5418,7 @@ extern void update_window_cursor (struct window *w, int on);
/* NSDraggingDestination protocol methods. Actually this is not really a
protocol, but a category of Object. O well... */
--(unsigned int) draggingEntered: (id <NSDraggingInfo>) sender
+-(NSDragOperation) draggingEntered: (id <NSDraggingInfo>) sender
{
NSTRACE (draggingEntered);
return NSDragOperationGeneric;
@@ -5703,7 +5703,7 @@ extern void update_window_cursor (struct window *w, int on);
#define SCROLL_BAR_FIRST_DELAY 0.5
#define SCROLL_BAR_CONTINUOUS_DELAY (1.0 / 15)
-+ (float) scrollerWidth
++ (CGFloat) scrollerWidth
{
/* TODO: if we want to allow variable widths, this is the place to do it,
however neither GNUstep nor Cocoa support it very well */
@@ -5834,14 +5834,26 @@ extern void update_window_cursor (struct window *w, int on);
em_whole = whole;
if (portion >= whole)
- [self setFloatValue: 0.0 knobProportion: 1.0];
+ {
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ [self setDoubleValue: 0.0];
+ [self setKnobProportion: 1.0];
+#else
+ [self setFloatValue: 0.0 knobProportion: 1.0];
+#endif
+ }
else
{
float pos, por;
portion = max ((float)whole*min_portion/pixel_height, portion);
pos = (float)position / (whole - portion);
por = (float)portion/whole;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ [self setDoubleValue: pos];
+ [self setKnobProportion: por];
+#else
[self setFloatValue: pos knobProportion: por];
+#endif
}
#ifdef NS_IMPL_GNUSTEP
[self display];
@@ -5946,7 +5958,8 @@ extern void update_window_cursor (struct window *w, int on);
case NSScrollerKnobSlot: /* GNUstep-only */
last_hit_part = scroll_bar_move_ratio; break;
default: /* NSScrollerNoPart? */
- fprintf (stderr, "EmacsScoller-mouseDown: unexpected part %d\n", part);
+ fprintf (stderr, "EmacsScoller-mouseDown: unexpected part %ld\n",
+ (long) part);
return;
}
diff --git a/src/process.c b/src/process.c
index e65d495..99f57d3 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1522,7 +1522,7 @@ list_processes_1 (query_only)
insert_string ("?");
if (INTEGERP (speed))
{
- sprintf (tembuf, " at %d b/s", XINT (speed));
+ sprintf (tembuf, " at %ld b/s", (long) XINT (speed));
insert_string (tembuf);
}
insert_string (")\n");
diff --git a/src/unexmacosx.c b/src/unexmacosx.c
index bb71d8f..489489d 100644
--- a/src/unexmacosx.c
+++ b/src/unexmacosx.c
@@ -684,8 +684,8 @@ read_load_commands ()
}
}
- printf ("Highest address of load commands in input file: %#8x\n",
- infile_lc_highest_addr);
+ printf ("Highest address of load commands in input file: %#8lx\n",
+ (long) infile_lc_highest_addr);
printf ("Lowest offset of all sections in __TEXT segment: %#8lx\n",
text_seg_lowest_offset);
--
1.6.4.1
[-- Attachment #2: 0002-Fix-Changelogs.patch --]
[-- Type: application/octet-stream, Size: 1074 bytes --]
From b86cef4736cc0ce5afe531a59c1b470256f12f65 Mon Sep 17 00:00:00 2001
From: Erik Charlebois <erikc@ermac.local>
Date: Tue, 8 Sep 2009 00:50:20 -0700
Subject: [PATCH 2/2] Fix Changelogs.
---
lib-src/ChangeLog | 4 ++++
src/ChangeLog | 2 --
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 04bc7a7..f183872 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,7 @@
+2009-09-08 Erik Charlebois <erikcharlebois@gmail.com>
+
+ * movemail.c (error): Change fprintf to fputs to fix warning.
+
2009-08-19 Glenn Morris <rgm@gnu.org>
* cvtmail.c: Remove file.
diff --git a/src/ChangeLog b/src/ChangeLog
index fa355da..02fab25 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,7 +1,5 @@
2009-09-08 Erik Charlebois <erikcharlebois@gmail.com>
- * movemail.c (error): Change fprintf to fputs to fix warning.
-
* emacs.c (main): Remove extra format specifier to fix warning.
* font.c (font_unparse_xlfd): Print EMACS_INT with %ld.
--
1.6.4.1
[-- Attachment #3: Type: text/plain, Size: 1300 bytes --]
I've attached two patches (sorry about that, first time I used git and
I got the ChangeLogs wrong after committing :). I've tried to make
sure nothing's been introduced that would break pre-10.5 OS X or
GNUstep, but I don't have either of those systems to test with. The
bulk of the changes deal with deprecated Cocoa methods, LP64 issues
(printf specifiers, NSInteger/NSUInteger) and CGFloat being double on
64-bit Cocoa. I've built/tested on 32- and 64-bit OS X 10.6.
Erik Charlebois
erikcharlebois@gmail.com
On 2009-09-07, at 4:26 PM, David Reitter wrote:
> Hi Erik,
>
> On Sep 7, 2009, at 5:08 PM, Erik Charlebois wrote:
>
>> I've posted the steps/fixes to get a 64-bit NS/Cocoa Emacs 23.1
>> working for Snow Leopard on my blog at http://blog.fac9.com/index.php/2009/08/30/building-a-64-bit-emacs-on-snow-leopard/
>> . I've been using it for a week without problems.
>
> Thanks, that's great news.
>
> Regarding your point 5: I did not redefine CGFloat when I tried to
> address these things; I'm not sure if it is necessary. You might be
> right.
> See this file
>
> http://github.com/davidswelt/aquamacs-emacs/blob/874784331f6e1bcfe319823616067bcf2432c29a/src/nsgui.h
>
> Would you be willing to post a patch with all of your changes?
>
> Thanks again
> - David
>
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Fixes for 64-bit Emacs on Snow Leopard
2009-09-08 8:14 ` Erik Charlebois
@ 2009-09-08 17:38 ` CHENG Gao
2009-09-09 7:32 ` Erik Charlebois
1 sibling, 0 replies; 8+ messages in thread
From: CHENG Gao @ 2009-09-08 17:38 UTC (permalink / raw)
To: emacs-devel
I search whole all DocSets including legacy library, and can not find
PSflush(). Gooling shows it's in OpenStep library. Since it's included
in NS_IMPL_COCOA, I trust it's safe to remove it.
--
The truth which makes men free is for the most part the truth which men prefer not to hear.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Fixes for 64-bit Emacs on Snow Leopard
2009-09-08 8:14 ` Erik Charlebois
2009-09-08 17:38 ` CHENG Gao
@ 2009-09-09 7:32 ` Erik Charlebois
1 sibling, 0 replies; 8+ messages in thread
From: Erik Charlebois @ 2009-09-09 7:32 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: 0001-Fix-Emacs-64-bit-on-Snow-Leopard.patch --]
[-- Type: application/octet-stream, Size: 20260 bytes --]
From caec5991567ba9546ca21b904b1a4824776a835c Mon Sep 17 00:00:00 2001
From: Erik Charlebois <erikc@ermac.local>
Date: Wed, 9 Sep 2009 00:24:37 -0700
Subject: [PATCH] Fix Emacs 64-bit on Snow Leopard.
---
lib-src/ChangeLog | 4 ++++
lib-src/movemail.c | 2 +-
src/ChangeLog | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
src/emacs.c | 2 +-
src/font.c | 11 ++++++-----
| 2 +-
src/nsfns.m | 6 ++----
src/nsfont.m | 44 ++++++++++++++++++++++++++++++++------------
src/nsgui.h | 18 +++++++++++++++---
src/nsimage.m | 4 ++--
| 6 +++---
src/nsterm.h | 7 +++++++
src/nsterm.m | 31 ++++++++++++++++++++++---------
src/process.c | 2 +-
src/unexmacosx.c | 4 ++--
15 files changed, 149 insertions(+), 44 deletions(-)
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 7970ee5..f2f9144 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,7 @@
+2009-09-09 Erik Charlebois <erikcharlebois@gmail.com>
+
+ * movemail.c (error): Change fprintf to fputs to fix warning.
+
2009-09-09 Glenn Morris <rgm@gnu.org>
* Makefile.in ($(DESTDIR)${archlibdir}): Set umask to world-readable
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 732f8dd..2feaae8 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -622,7 +622,7 @@ error (s1, s2, s3)
else if (s2)
fprintf (stderr, s1, s2);
else
- fprintf (stderr, s1);
+ fputs (s1, stderr);
fprintf (stderr, "\n");
}
diff --git a/src/ChangeLog b/src/ChangeLog
index 52ee600..80c487a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,53 @@
+2009-09-09 Erik Charlebois <erikcharlebois@gmail.com>
+
+ * emacs.c (main): Remove extra format specifier to fix warning.
+
+ * font.c (font_unparse_xlfd): Print EMACS_INT with %ld.
+ (font_unparse_fcname): Print EMACS_INT with %ld.
+
+ * menu.c (find_and_return_menu_selection): Fix truncation warning.
+
+ * nsfns.m (x-close-connection): Remove PSFlush call. Does not do anything
+ on Cocoa. Does not exist in 64-bit Cocoa.
+ (xw-color-values): Use CGFloat instead of float.
+
+ * nsfont.m (ns_char_width): Use sizeWithAttributes: instead of
+ widthOfString:, which does no exist in 64-bit Cocoa.
+ (ns_findfonts): Print EMACS_INT with %ld.
+ (nsfont_list_family): Print EMACS_INT with %ld.
+ (nsfont_open): Use Core Text for OS X 10.5 and later.
+ (nsfont_close): Release Core Text resource.
+ (ns_uni_to_glyphs): Use NSUInteger when calling Cocoa APIs.
+ (layoutOptions): Use NSUInteger in method signature.
+ (insertGlyphs): Use NSUIntger in method signature.
+ (setIntAttribute): Use NSInteger and NSUInteger in method signature.
+
+ * nsgui.h: Add typedefs for NSUInteger, NSInteger and CGFloat for
+ pre-10.5 OS X and GNUstep.
+
+ * nsimage.m (setXBMColor): Use CGFloat for calls to Cocoa.
+ (getPixelAtX): Use CGFloat for calls to Cocoa.
+
+ * nsmenu.m (addItemWithWidgetValue): Use NSInteger for call to Cocoa.
+ (fillWithWidgetValue): sizeToFit is deprecated (does nothing). Remove
+ call for OS X 10.5 and later.
+ (initWithContentRect): Use NSUInteger in method signature.
+
+ * nsterm.h: Use Core Text on OS X 10.5 and later.
+
+ * nsterm.m (mouseDown): Remove redundant leading 0s in format specifier.
+ (ns_query_color): Use CGFloat for calls to Cocoa.
+ (characterIndexForPoint): Use NUSInteger in method signature.
+ (draggingEntered): Use NSDragOperation in method signature.
+ (scrollerWidth): Use CGFloat in method signature.
+ (setPosition): Use setDoubleValue: and setKnobProportion: on 10.5 and
+ later since setFloatVAlue:knobProportion: is deprecated.
+ (mouseDown): Use %ld to print NSScrollerPart.
+
+ * process.c (list_processes_1): Use %ld to print EMACS_INT.
+
+ * unexmacosx.c (read_load_commands): Use %ld to print vm_address_t.
+
2009-09-09 Stefan Monnier <monnier@iro.umontreal.ca>
* keymap.c (where_is_internal): Filter out shadowed remappings.
diff --git a/src/emacs.c b/src/emacs.c
index 2c14be5..44ed9ce 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1181,7 +1181,7 @@ main (int argc, char **argv)
argv[skip_args] = fdStr;
execv (argv[0], argv);
- fprintf (stderr, "emacs daemon: exec failed: %d\t%d\n", errno);
+ fprintf (stderr, "emacs daemon: exec failed: %d\n", errno);
exit (1);
}
diff --git a/src/font.c b/src/font.c
index cfc4852..7571a00 100644
--- a/src/font.c
+++ b/src/font.c
@@ -1357,7 +1357,7 @@ font_unparse_xlfd (font, pixel_size, name, nbytes)
{
f[XLFD_AVGWIDTH_INDEX] = alloca (11);
len += sprintf (f[XLFD_AVGWIDTH_INDEX],
- "%d", XINT (AREF (font, FONT_AVGWIDTH_INDEX))) + 1;
+ "%ld", (long) XINT (AREF (font, FONT_AVGWIDTH_INDEX))) + 1;
}
else
f[XLFD_AVGWIDTH_INDEX] = "*", len += 2;
@@ -1673,7 +1673,7 @@ font_unparse_fcname (font, pixel_size, name, nbytes)
}
if (INTEGERP (AREF (font, FONT_DPI_INDEX)))
- len += sprintf (work, ":dpi=%d", XINT (AREF (font, FONT_DPI_INDEX)));
+ len += sprintf (work, ":dpi=%ld", (long) XINT (AREF (font, FONT_DPI_INDEX)));
if (INTEGERP (AREF (font, FONT_SPACING_INDEX)))
len += strlen (":spacing=100");
if (INTEGERP (AREF (font, FONT_AVGWIDTH_INDEX)))
@@ -1686,7 +1686,7 @@ font_unparse_fcname (font, pixel_size, name, nbytes)
if (STRINGP (val))
len += SBYTES (val);
else if (INTEGERP (val))
- len += sprintf (work, "%d", XINT (val));
+ len += sprintf (work, "%ld", (long) XINT (val));
else if (SYMBOLP (val))
len += (NILP (val) ? 5 : 4); /* for "false" or "true" */
}
@@ -1713,9 +1713,10 @@ font_unparse_fcname (font, pixel_size, name, nbytes)
p += sprintf (p, ":%s=%s", style_names[i],
SDATA (SYMBOL_NAME (styles[i])));
if (INTEGERP (AREF (font, FONT_DPI_INDEX)))
- p += sprintf (p, ":dpi=%d", XINT (AREF (font, FONT_DPI_INDEX)));
+ p += sprintf (p, ":dpi=%ld", (long) XINT (AREF (font, FONT_DPI_INDEX)));
if (INTEGERP (AREF (font, FONT_SPACING_INDEX)))
- p += sprintf (p, ":spacing=%d", XINT (AREF (font, FONT_SPACING_INDEX)));
+ p += sprintf (p, ":spacing=%ld",
+ (long) XINT (AREF (font, FONT_SPACING_INDEX)));
if (INTEGERP (AREF (font, FONT_AVGWIDTH_INDEX)))
{
if (XINT (AREF (font, FONT_AVGWIDTH_INDEX)) == 0)
--git a/src/menu.c b/src/menu.c
index 940986f..23a7013 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1005,7 +1005,7 @@ find_and_return_menu_selection (FRAME_PTR f, int keymaps, void *client_data)
{
entry
= XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_VALUE];
- if ((int) (EMACS_INT)client_data == (int)(&XVECTOR (menu_items)->contents[i]))
+ if ((EMACS_INT)client_data == (EMACS_INT)(&XVECTOR (menu_items)->contents[i]))
{
if (keymaps != 0)
{
diff --git a/src/nsfns.m b/src/nsfns.m
index 136ae03..8375109 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1771,9 +1771,7 @@ The argument DISPLAY is currently ignored. */)
Lisp_Object display;
{
check_ns ();
-#ifdef NS_IMPL_COCOA
- PSFlush ();
-#endif
+
/*ns_delete_terminal (dpyinfo->terminal); */
[NSApp terminate: NSApp];
return Qnil;
@@ -2237,7 +2235,7 @@ DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
Lisp_Object color, frame;
{
NSColor * col;
- float red, green, blue, alpha;
+ CGFloat red, green, blue, alpha;
check_ns ();
CHECK_STRING (color);
diff --git a/src/nsfont.m b/src/nsfont.m
index 46c50aa..c141fa4 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -245,7 +245,10 @@ ns_char_width (NSFont *sfont, int c)
return w;
}
#endif
- w = [sfont widthOfString: cstr];
+ NSDictionary *attrsDictionary =
+ [NSDictionary dictionaryWithObject: sfont
+ forKey: NSFontAttributeName];
+ w = [cstr sizeWithAttributes: attrsDictionary].width;
return max (w, 2.0);
}
@@ -517,7 +520,8 @@ ns_findfonts (Lisp_Object font_spec, BOOL isMatch)
return ns_fallback_entity ();
if (NSFONT_TRACE)
- fprintf (stderr, " Returning %d entities.\n", XINT (Flength (list)));
+ fprintf (stderr, " Returning %ld entities.\n",
+ (long) XINT (Flength (list)));
return list;
}
@@ -623,8 +627,8 @@ nsfont_list_family (Lisp_Object frame)
/* FIXME: escape the name? */
if (NSFONT_TRACE)
- fprintf (stderr, "nsfont: list families returning %d entries\n",
- XINT (Flength (list)));
+ fprintf (stderr, "nsfont: list families returning %ld entries\n",
+ (long) XINT (Flength (list)));
return list;
}
@@ -843,14 +847,27 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
((CFStringRef)@"Monaco", kATSOptionFlagsDefault);
}
}
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ font_info->ctfont =
+ CTFontCreateWithPlatformFont (atsFont, 0.0f, NULL, NULL);
+ font_info->cgfont = CTFontCopyGraphicsFont (font_info->ctfont, NULL);
+#else
font_info->cgfont = CGFontCreateWithPlatformFont ((void*)&atsFont);
+#endif
}
#endif
/* set up metrics portion of font struct */
font->ascent = [sfont ascender];
font->descent = -[sfont descender];
- font->min_width = [sfont widthOfString: @"|"]; /* FIXME */
+
+ /* FIXME */
+ NSDictionary *attrsDictionary =
+ [NSDictionary dictionaryWithObject: sfont
+ forKey: NSFontAttributeName];
+ font->min_width = [@"|" sizeWithAttributes: attrsDictionary].width;
+
font->space_width = lrint (ns_char_width (sfont, ' '));
font->average_width = lrint (font_info->width);
font->max_width = lrint (font_info->max_bounds.width);
@@ -888,6 +905,9 @@ nsfont_close (FRAME_PTR f, struct font *font)
[font_info->nsfont release];
#ifdef NS_IMPL_COCOA
CGFontRelease (font_info->cgfont);
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ CFRelease (font_info->ctfont);
+#endif
#endif
xfree (font_info->name);
xfree (font_info);
@@ -1308,7 +1328,7 @@ ns_uni_to_glyphs (struct nsfont_info *font_info, unsigned char block)
NSGlyphGenerator *glyphGenerator = [NSGlyphGenerator sharedGlyphGenerator];
/*NSCharacterSet *coveredChars = [nsfont coveredCharacterSet]; */
unsigned int numGlyphs = [font_info->nsfont numberOfGlyphs];
- unsigned int gInd =0, cInd =0;
+ NSUInteger gInd =0, cInd =0;
[glyphStorage setString: allChars font: font_info->nsfont];
[glyphGenerator generateGlyphsForGlyphStorage: glyphStorage
@@ -1439,7 +1459,7 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
}
/* NSGlyphStorage protocol */
-- (unsigned int)layoutOptions
+- (NSUInteger)layoutOptions
{
return 0;
}
@@ -1449,9 +1469,9 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
return attrStr;
}
-- (void)insertGlyphs: (const NSGlyph *)glyphs length: (unsigned int)length
- forStartingGlyphAtIndex: (unsigned int)glyphIndex
- characterIndex: (unsigned int)charIndex
+- (void)insertGlyphs: (const NSGlyph *)glyphs length: (NSUInteger)length
+ forStartingGlyphAtIndex: (NSUInteger)glyphIndex
+ characterIndex: (NSUInteger)charIndex
{
len = glyphIndex+length;
for (i =glyphIndex; i<len; i++)
@@ -1460,8 +1480,8 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
maxGlyph = len;
}
-- (void)setIntAttribute: (int)attributeTag value: (int)val
- forGlyphAtIndex: (unsigned)glyphIndex
+- (void)setIntAttribute: (NSInteger)attributeTag value: (NSInteger)val
+ forGlyphAtIndex: (NSUInteger)glyphIndex
{
return;
}
diff --git a/src/nsgui.h b/src/nsgui.h
index 9bf6be6..5594b7b 100644
--- a/src/nsgui.h
+++ b/src/nsgui.h
@@ -128,13 +128,25 @@ typedef struct {
unsigned width, height;
} XRectangle;
+#if !defined(__OBJC__) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
+#ifdef _LP64
+typedef unsigned long NSUInteger;
+typedef long NSInteger;
+typedef double CGFloat;
+#else
+typedef unsigned int NSUInteger;
+typedef int NSInteger;
+typedef float CGFloat;
+#endif
+#endif
+
#ifndef __OBJC__
-typedef struct _NSPoint { float x, y; } NSPoint;
-typedef struct _NSSize { float width, height; } NSSize;
+typedef struct _NSPoint { CGFloat x, y; } NSPoint;
+typedef struct _NSSize { CGFloat width, height; } NSSize;
typedef struct _NSRect { NSPoint origin; NSSize size; } NSRect;
#endif
-#define NativeRectangle struct _NSRect
+#define NativeRectangle NSRect
#define CONVERT_TO_XRECT(xr, nr) \
((xr).x = (nr).origin.x, \
diff --git a/src/nsimage.m b/src/nsimage.m
index 9ef7ad3..87499b0 100644
--- a/src/nsimage.m
+++ b/src/nsimage.m
@@ -329,7 +329,7 @@ static EmacsImage *ImageList = nil;
NSSize s = [self size];
int len = (int) s.width * s.height;
unsigned char *planes[5];
- float r, g, b, a;
+ CGFloat r, g, b, a;
NSColor *rgbColor;
if (bmRep == nil || color == nil)
@@ -431,7 +431,7 @@ static EmacsImage *ImageList = nil;
else if (onTiger)
{
NSColor *color = [bmRep colorAtX: x y: y];
- float r, g, b, a;
+ CGFloat r, g, b, a;
[color getRed: &r green: &g blue: &b alpha: &a];
return ((int)(a * 255.0) << 24)
| ((int)(r * 255.0) << 16) | ((int)(g * 255.0) << 8)
--git a/src/nsmenu.m b/src/nsmenu.m
index 0518466..e8549b4 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -656,7 +656,7 @@ name_is_separator (name)
else
[item setState: NSOffState];
- [item setTag: (int)wv->call_data];
+ [item setTag: (NSInteger)wv->call_data];
}
return item;
@@ -708,7 +708,7 @@ name_is_separator (name)
#ifdef NS_IMPL_GNUSTEP
if ([[self window] isVisible])
[self sizeToFit];
-#else
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
if ([self supermenu] == nil)
[self sizeToFit];
#endif
@@ -1611,7 +1611,7 @@ ns_popup_dialog (Lisp_Object position, Lisp_Object contents, Lisp_Object header)
#define TEXTHEIGHT 20.0
#define MINCELLWIDTH 90.0
-- initWithContentRect: (NSRect)contentRect styleMask: (unsigned int)aStyle
+- initWithContentRect: (NSRect)contentRect styleMask: (NSUInteger)aStyle
backing: (NSBackingStoreType)backingType defer: (BOOL)flag
{
NSSize spacing = {SPACER, SPACER};
diff --git a/src/nsterm.h b/src/nsterm.h
index 7375e3c..033f757 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -420,9 +420,16 @@ struct nsfont_info
#else /* GNUstep or OS X < 10.3 */
void *cgfont;
#endif
+ /* ctFont is used only on OS X 10.5+ */
+#if defined (NS_IMPL_COCOA) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
+ CTFontRef ctfont;
+#else /* GNUstep or OS X < 10.5 */
+ void *ctfont;
+#endif
#else /* ! OBJC */
void *nsfont;
void *cgfont;
+ void *ctfont;
#endif
char bold, ital; /* convenience flags */
char synthItal;
diff --git a/src/nsterm.m b/src/nsterm.m
index 5a58f1d..233f699 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1481,7 +1481,7 @@ ns_color_to_lisp (NSColor *col)
Convert a color to a lisp string with the RGB equivalent
-------------------------------------------------------------------------- */
{
- float red, green, blue, alpha, gray;
+ CGFloat red, green, blue, alpha, gray;
char buf[1024];
const char *str;
NSTRACE (ns_color_to_lisp);
@@ -1501,13 +1501,13 @@ ns_color_to_lisp (NSColor *col)
{
[[col colorUsingColorSpaceName: NSCalibratedWhiteColorSpace]
getWhite: &gray alpha: &alpha];
- snprintf (buf, sizeof (buf), "#%02.2lx%02.2lx%02.2lx",
+ snprintf (buf, sizeof (buf), "#%2.2lx%2.2lx%2.2lx",
lrint (gray * 0xff), lrint (gray * 0xff), lrint (gray * 0xff));
UNBLOCK_INPUT;
return build_string (buf);
}
- snprintf (buf, sizeof (buf), "#%02.2lx%02.2lx%02.2lx",
+ snprintf (buf, sizeof (buf), "#%2.2lx%2.2lx%2.2lx",
lrint (red*0xff), lrint (green*0xff), lrint (blue*0xff));
UNBLOCK_INPUT;
@@ -1523,7 +1523,7 @@ ns_query_color(void *col, XColor *color_def, int setPixel)
and set color_def pixel to the resulting index.
-------------------------------------------------------------------------- */
{
- float r, g, b, a;
+ CGFloat r, g, b, a;
[((NSColor *)col) getRed: &r green: &g blue: &b alpha: &a];
color_def->red = r * 65535;
@@ -4741,7 +4741,7 @@ extern void update_window_cursor (struct window *w, int on);
return NSMakeRange (NSNotFound, 0);
}
-- (unsigned int)characterIndexForPoint: (NSPoint)thePoint
+- (NSUInteger)characterIndexForPoint: (NSPoint)thePoint
{
if (NS_KEYLOG)
NSLog (@"characterIndexForPoint request");
@@ -5418,7 +5418,7 @@ extern void update_window_cursor (struct window *w, int on);
/* NSDraggingDestination protocol methods. Actually this is not really a
protocol, but a category of Object. O well... */
--(unsigned int) draggingEntered: (id <NSDraggingInfo>) sender
+-(NSDragOperation) draggingEntered: (id <NSDraggingInfo>) sender
{
NSTRACE (draggingEntered);
return NSDragOperationGeneric;
@@ -5703,7 +5703,7 @@ extern void update_window_cursor (struct window *w, int on);
#define SCROLL_BAR_FIRST_DELAY 0.5
#define SCROLL_BAR_CONTINUOUS_DELAY (1.0 / 15)
-+ (float) scrollerWidth
++ (CGFloat) scrollerWidth
{
/* TODO: if we want to allow variable widths, this is the place to do it,
however neither GNUstep nor Cocoa support it very well */
@@ -5834,14 +5834,26 @@ extern void update_window_cursor (struct window *w, int on);
em_whole = whole;
if (portion >= whole)
- [self setFloatValue: 0.0 knobProportion: 1.0];
+ {
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ [self setDoubleValue: 0.0];
+ [self setKnobProportion: 1.0];
+#else
+ [self setFloatValue: 0.0 knobProportion: 1.0];
+#endif
+ }
else
{
float pos, por;
portion = max ((float)whole*min_portion/pixel_height, portion);
pos = (float)position / (whole - portion);
por = (float)portion/whole;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ [self setDoubleValue: pos];
+ [self setKnobProportion: por];
+#else
[self setFloatValue: pos knobProportion: por];
+#endif
}
#ifdef NS_IMPL_GNUSTEP
[self display];
@@ -5946,7 +5958,8 @@ extern void update_window_cursor (struct window *w, int on);
case NSScrollerKnobSlot: /* GNUstep-only */
last_hit_part = scroll_bar_move_ratio; break;
default: /* NSScrollerNoPart? */
- fprintf (stderr, "EmacsScoller-mouseDown: unexpected part %d\n", part);
+ fprintf (stderr, "EmacsScoller-mouseDown: unexpected part %ld\n",
+ (long) part);
return;
}
diff --git a/src/process.c b/src/process.c
index e65d495..99f57d3 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1522,7 +1522,7 @@ list_processes_1 (query_only)
insert_string ("?");
if (INTEGERP (speed))
{
- sprintf (tembuf, " at %d b/s", XINT (speed));
+ sprintf (tembuf, " at %ld b/s", (long) XINT (speed));
insert_string (tembuf);
}
insert_string (")\n");
diff --git a/src/unexmacosx.c b/src/unexmacosx.c
index bb71d8f..489489d 100644
--- a/src/unexmacosx.c
+++ b/src/unexmacosx.c
@@ -684,8 +684,8 @@ read_load_commands ()
}
}
- printf ("Highest address of load commands in input file: %#8x\n",
- infile_lc_highest_addr);
+ printf ("Highest address of load commands in input file: %#8lx\n",
+ (long) infile_lc_highest_addr);
printf ("Lowest offset of all sections in __TEXT segment: %#8lx\n",
text_seg_lowest_offset);
--
1.6.4.1
[-- Attachment #2: Type: text/plain, Size: 1708 bytes --]
Revised patch that fixes 10.5 building (removed the protocol
specifications as noted by Eddie Hillenbrand) and removed the PSFlush
() call as noted by Cheng Gao.
Erik Charlebois
erikcharlebois@gmail.com
On 2009-09-08, at 1:14 AM, Erik Charlebois wrote:
> <0001-Fixes-to-get-a-working-64-bit-Emacs-on-OS-X-10.6.patch><0002-
> Fix-Changelogs.patch>
> I've attached two patches (sorry about that, first time I used git
> and I got the ChangeLogs wrong after committing :). I've tried to
> make sure nothing's been introduced that would break pre-10.5 OS X
> or GNUstep, but I don't have either of those systems to test with.
> The bulk of the changes deal with deprecated Cocoa methods, LP64
> issues (printf specifiers, NSInteger/NSUInteger) and CGFloat being
> double on 64-bit Cocoa. I've built/tested on 32- and 64-bit OS X 10.6.
>
> Erik Charlebois
> erikcharlebois@gmail.com
>
>
>
>
> On 2009-09-07, at 4:26 PM, David Reitter wrote:
>
>> Hi Erik,
>>
>> On Sep 7, 2009, at 5:08 PM, Erik Charlebois wrote:
>>
>>> I've posted the steps/fixes to get a 64-bit NS/Cocoa Emacs 23.1
>>> working for Snow Leopard on my blog at http://blog.fac9.com/index.php/2009/08/30/building-a-64-bit-emacs-on-snow-leopard/
>>> . I've been using it for a week without problems.
>>
>> Thanks, that's great news.
>>
>> Regarding your point 5: I did not redefine CGFloat when I tried to
>> address these things; I'm not sure if it is necessary. You might
>> be right.
>> See this file
>>
>> http://github.com/davidswelt/aquamacs-emacs/blob/874784331f6e1bcfe319823616067bcf2432c29a/src/nsgui.h
>>
>> Would you be willing to post a patch with all of your changes?
>>
>> Thanks again
>> - David
>>
>
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Fixes for 64-bit Emacs on Snow Leopard
2009-09-07 22:03 ` Chong Yidong
@ 2009-09-09 12:56 ` Adrian Robert
0 siblings, 0 replies; 8+ messages in thread
From: Adrian Robert @ 2009-09-09 12:56 UTC (permalink / raw)
To: Chong Yidong; +Cc: David Reitter, Erik Charlebois, emacs-devel
> On Sep 7, 2009, at 6:03 PM, Chong Yidong wrote:
>> Erik Charlebois <erikcharlebois@gmail.com> writes:
>>
>>> I've posted the steps/fixes to get a 64-bit NS/Cocoa Emacs 23.1
>>> working for
>>> Snow Leopard on my blog:
>>> ...
>>>
>>> Feel free to roll those changes in, I haven't contributed to any GNU
>>> projects before so I'm not really sure where to begin making a
>>> patch /
>>> dealing with copyright assignment.
>>
>> Could someone review this and check it in if it's the right thing
>> to do?
>> (David or Adrian?)
Excellent. I should be able to take a look at this next week.
(URL is http://blog.fac9.com/index.php/2009/08/30/building-a-64-bit-
emacs-on-snow-leopard/ )
Adrian
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-09-09 12:56 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-07 21:08 Fixes for 64-bit Emacs on Snow Leopard Erik Charlebois
2009-09-07 22:03 ` Chong Yidong
2009-09-09 12:56 ` Adrian Robert
2009-09-07 23:26 ` David Reitter
2009-09-08 8:14 ` Erik Charlebois
2009-09-08 17:38 ` CHENG Gao
2009-09-09 7:32 ` Erik Charlebois
-- strict thread matches above, loose matches on Subject: below --
2009-09-08 5:18 Eddie Hillenbrand
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).