Re: winequartz.drv: Second glance at Window support.
Pierre d'Herbemont <pdherbemont(a)free.fr> writes:
+static inline void * BindCarbonFunctions(void) +{ + void * HIToolBoxDLHandle = dlopen("/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/HIToolbox", RTLD_LAZY | RTLD_LOCAL); + + if (!HIToolBoxDLHandle) { + fprintf(stderr, "%s impossible d'ouvrir HIToolBoxDLHandle\n", __FUNCTION__); + return nil; + } +#define LOAD_FUNCTION(f) \ + if((carbonPtr_##f = dlsym(HIToolBoxDLHandle, #f)) == NULL) \ + { \ + fprintf(stderr, "%s Can't find symbol %s\n", __FUNCTION__, #f); \ + return nil; \ + } + LOAD_FUNCTION(ShowWindow) + LOAD_FUNCTION(HideWindow) +#undef LOAD_FUNCTION + return HIToolBoxDLHandle; +}
This stuff should go in a C file, not in a header. Also you should use ERR instead of fprintf, and error messages should be in English <g>
+struct quartzdrv_thread_data +{ + int process_event_count; /* recursion count for event processing */ +}; + +extern struct quartzdrv_thread_data *quartzdrv_init_thread_data(void); +extern DWORD thread_data_tls_index; + +inline static struct quartzdrv_thread_data *quartzdrv_thread_data(void) +{ + struct quartzdrv_thread_data *data = TlsGetValue( thread_data_tls_index ); + if (!data) data = quartzdrv_init_thread_data(); + return data; +}
This is not used, it would be better to wait until you actually need per-thread data to add it.
+/* --------------------------------------------------------------------- + quartzdrv_main.c +*/ +extern void wine_quartzdrv_lock(void); +extern void wine_quartzdrv_unlock(void);
Do you really need locking around Carbon calls, or is this just imitating x11drv? (either way there's no reason to export those).
+/* --------------------------------------------------------------------- + * get_quartzdrv_win_data_from_hwnd + */ +struct quartzdrv_win_data *get_quartzdrv_win_data_from_hwnd(HWND hwnd) +{ + return (struct quartzdrv_win_data *)GetPropA(hwnd, wine_quartzdrv_win_data); +}
GetProp is not the best choice for associating data to a window as it requires a server round trip. A process-local mechanism is preferable. -- Alexandre Julliard julliard(a)winehq.org
participants (1)
-
Alexandre Julliard