3 #import "OFObject+GLibThread.h"
5 int _OFObject_JubGlibThread_reference;
25 static gboolean callback0(gpointer object)
27 struct params0 *parm = object;
28 [parm->object performSelector: parm->selector];
29 [parm->object freeMemory: parm];
33 static gboolean callback1(gpointer object)
35 struct params1 *parm = object;
36 [parm->object performSelector: parm->selector
37 withObject: parm->param];
38 [parm->param release];
39 [parm->object freeMemory: parm];
43 static gboolean callback2(gpointer object)
45 struct params2 *parm = object;
46 [parm->object performSelector: parm->selector
47 withObject: parm->param1
48 withObject: parm->param2];
49 [parm->param1 release];
50 [parm->param2 release];
51 [parm->object freeMemory: parm];
55 @implementation OFObject (JubGlibThread)
56 - (void)performSelectorOnGLibThread: (SEL)selector
58 struct params0 *parm = [self allocMemoryWithSize: sizeof(*parm)];
60 parm->selector = selector;
61 g_idle_add(callback0, parm);
64 - (void)performSelectorOnGLibThread: (SEL)selector
65 withObject: (id)object
67 struct params1 *parm = [self allocMemoryWithSize: sizeof(*parm)];
69 parm->selector = selector;
70 parm->param = [object retain];
71 g_idle_add(callback1, parm);
74 - (void)performSelectorOnGLibThread: (SEL)selector
75 withObject: (id)object1
76 withObject: (id)object2
78 struct params2 *parm = [self allocMemoryWithSize: sizeof(*parm)];
80 parm->selector = selector;
81 parm->param1 = [object1 retain];
82 parm->param2 = [object2 retain];
83 g_idle_add(callback2, parm);