[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/mac.c,v [EMACS_22_BASE]
From: |
YAMAMOTO Mitsuharu |
Subject: |
[Emacs-diffs] Changes to emacs/src/mac.c,v [EMACS_22_BASE] |
Date: |
Sat, 19 Apr 2008 01:24:48 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Branch: EMACS_22_BASE
Changes by: YAMAMOTO Mitsuharu <mituharu> 08/04/19 01:24:48
Index: mac.c
===================================================================
RCS file: /sources/emacs/emacs/src/mac.c,v
retrieving revision 1.77.2.8
retrieving revision 1.77.2.9
diff -u -b -r1.77.2.8 -r1.77.2.9
--- mac.c 6 Apr 2008 01:57:37 -0000 1.77.2.8
+++ mac.c 19 Apr 2008 01:24:47 -0000 1.77.2.9
@@ -817,7 +817,7 @@
}
#if TARGET_API_MAC_CARBON
-static OSErr
+OSErr
create_apple_event (class, id, result)
AEEventClass class;
AEEventID id;
@@ -842,30 +842,33 @@
return err;
}
-OSStatus
-create_apple_event_from_event_ref (event, num_params, names, types, result)
+Lisp_Object
+mac_event_parameters_to_lisp (event, num_params, names, types)
EventRef event;
UInt32 num_params;
const EventParamName *names;
const EventParamType *types;
- AppleEvent *result;
{
OSStatus err;
- UInt32 i, size;
+ Lisp_Object result = Qnil;
+ UInt32 i;
+ ByteCount size;
+#ifdef MAC_OSX
CFStringRef string;
CFDataRef data;
+#endif
char *buf = NULL;
- err = create_apple_event (0, 0, result); /* Dummy class and ID. */
- if (err != noErr)
- return err;
-
for (i = 0; i < num_params; i++)
- switch (types[i])
+ {
+ EventParamName name = names[i];
+ EventParamType type = types[i];
+
+ switch (type)
{
#ifdef MAC_OSX
case typeCFStringRef:
- err = GetEventParameter (event, names[i], typeCFStringRef, NULL,
+ err = GetEventParameter (event, name, typeCFStringRef, NULL,
sizeof (CFStringRef), NULL, &string);
if (err != noErr)
break;
@@ -874,97 +877,41 @@
'?');
if (data == NULL)
break;
- AEPutParamPtr (result, names[i], typeUTF8Text,
- CFDataGetBytePtr (data), CFDataGetLength (data));
+ name = EndianU32_NtoB (name);
+ type = EndianU32_NtoB (typeUTF8Text);
+ result =
+ Fcons (Fcons (make_unibyte_string ((char *) &name, 4),
+ Fcons (make_unibyte_string ((char *) &type, 4),
+ make_unibyte_string (CFDataGetBytePtr (data),
+ CFDataGetLength (data)))),
+ result);
CFRelease (data);
break;
#endif
default:
- err = GetEventParameter (event, names[i], types[i], NULL,
- 0, &size, NULL);
+ err = GetEventParameter (event, name, type, NULL, 0, &size, NULL);
if (err != noErr)
break;
buf = xrealloc (buf, size);
- err = GetEventParameter (event, names[i], types[i], NULL,
- size, NULL, buf);
- if (err == noErr)
- AEPutParamPtr (result, names[i], types[i], buf, size);
- break;
- }
- if (buf)
- xfree (buf);
-
- return noErr;
-}
-
-OSErr
-create_apple_event_from_drag_ref (drag, num_types, types, result)
- DragRef drag;
- UInt32 num_types;
- const FlavorType *types;
- AppleEvent *result;
-{
- OSErr err;
- UInt16 num_items;
- AppleEvent items;
- long index;
- char *buf = NULL;
-
- err = CountDragItems (drag, &num_items);
- if (err != noErr)
- return err;
- err = AECreateList (NULL, 0, false, &items);
- if (err != noErr)
- return err;
-
- for (index = 1; index <= num_items; index++)
- {
- ItemReference item;
- DescType desc_type = typeNull;
- Size size;
-
- err = GetDragItemReferenceNumber (drag, index, &item);
- if (err == noErr)
- {
- int i;
-
- for (i = 0; i < num_types; i++)
- {
- err = GetFlavorDataSize (drag, item, types[i], &size);
+ err = GetEventParameter (event, name, type, NULL, size, NULL, buf);
if (err == noErr)
{
- buf = xrealloc (buf, size);
- err = GetFlavorData (drag, item, types[i], buf, &size, 0);
+ name = EndianU32_NtoB (name);
+ type = EndianU32_NtoB (type);
+ result =
+ Fcons (Fcons (make_unibyte_string ((char *) &name, 4),
+ Fcons (make_unibyte_string ((char *) &type, 4),
+ make_unibyte_string (buf, size))),
+ result);
}
- if (err == noErr)
- {
- desc_type = types[i];
break;
}
}
- }
- err = AEPutPtr (&items, index, desc_type,
- desc_type != typeNull ? buf : NULL,
- desc_type != typeNull ? size : 0);
- if (err != noErr)
- break;
- }
if (buf)
xfree (buf);
- if (err == noErr)
- {
- err = create_apple_event (0, 0, result); /* Dummy class and ID. */
- if (err == noErr)
- err = AEPutParamDesc (result, keyDirectObject, &items);
- if (err != noErr)
- AEDisposeDesc (result);
- }
-
- AEDisposeDesc (&items);
-
- return err;
+ return result;
}
#endif /* TARGET_API_MAC_CARBON */