| 165 thread.finish_callback = f; |
165 thread.finish_callback = f; |
| 166 thread.finish_userdata = fd; |
166 thread.finish_userdata = fd; |
| 167 [thread start]; |
167 [thread start]; |
| 168 } |
168 } |
| 169 |
169 |
| |
170 @implementation UiAppCallback |
| |
171 |
| |
172 - (id) initWithCallback:(ui_threadfunc)func userdata:(void*)userdata { |
| |
173 self->callback = func; |
| |
174 self->userdata = userdata; |
| |
175 return self; |
| |
176 } |
| |
177 |
| |
178 - (void) callMainThread { |
| |
179 [self performSelectorOnMainThread:@selector(mainThread:) |
| |
180 withObject:nil |
| |
181 waitUntilDone:NO]; |
| |
182 } |
| |
183 |
| |
184 - (void) mainThread:(id)n { |
| |
185 callback(userdata); |
| |
186 } |
| |
187 |
| |
188 @end |
| |
189 |
| 170 void ui_call_mainthread(ui_threadfunc tf, void* td) { |
190 void ui_call_mainthread(ui_threadfunc tf, void* td) { |
| 171 |
191 UiAppCallback *cb = [[UiAppCallback alloc]initWithCallback:tf userdata:td]; |
| |
192 [cb callMainThread]; |
| 172 } |
193 } |