/*********************************************************************** * macdrv_init_thread_data */ struct macdrv_thread_data *macdrv_init_thread_data(void) { struct macdrv_thread_data *data = macdrv_thread_data(); if (data) return data; if (!(data = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*data)))) { ERR("could not create data\n"); ExitProcess(1); } if (!(data->queue = macdrv_create_event_queue())) { ERR("macdrv: Can't create event queue.\n"); ExitProcess(1); } data->keyboard_layout_uchr = macdrv_copy_keyboard_layout(&data->keyboard_type, &data->iso_keyboard); macdrv_compute_keyboard_layout(data); set_queue_display_fd(macdrv_get_event_queue_fd(data->queue)); TlsSetValue(thread_data_tls_index, data); return data; }
/*********************************************************************** * macdrv_init_thread_data */ struct macdrv_thread_data *macdrv_init_thread_data(void) { struct macdrv_thread_data *data = macdrv_thread_data(); TISInputSourceRef input_source; if (data) return data; if (!(data = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*data)))) { ERR("could not create data\n"); ExitProcess(1); } if (!(data->queue = macdrv_create_event_queue(macdrv_handle_event))) { ERR("macdrv: Can't create event queue.\n"); ExitProcess(1); } macdrv_get_input_source_info(&data->keyboard_layout_uchr, &data->keyboard_type, &data->iso_keyboard, &input_source); data->active_keyboard_layout = macdrv_get_hkl_from_source(input_source); CFRelease(input_source); macdrv_compute_keyboard_layout(data); set_queue_display_fd(macdrv_get_event_queue_fd(data->queue)); TlsSetValue(thread_data_tls_index, data); return data; }