static LRESULT CALLBACK wined3d_wndproc(HWND window, UINT message, WPARAM wparam, LPARAM lparam) { struct wined3d_wndproc *entry; struct wined3d_device *device; BOOL unicode; WNDPROC proc; wined3d_wndproc_mutex_lock(); entry = wined3d_find_wndproc(window); if (!entry) { wined3d_wndproc_mutex_unlock(); ERR("Window %p is not registered with wined3d.\n", window); return DefWindowProcW(window, message, wparam, lparam); } device = entry->device; unicode = entry->unicode; proc = entry->proc; wined3d_wndproc_mutex_unlock(); if (device) return device_process_message(device, window, unicode, message, wparam, lparam, proc); if (unicode) return CallWindowProcW(proc, window, message, wparam, lparam); return CallWindowProcA(proc, window, message, wparam, lparam); }
static LRESULT CALLBACK wined3d_wndproc(HWND window, UINT message, WPARAM wparam, LPARAM lparam) { struct wined3d_wndproc *entry; IWineD3DDeviceImpl *device; WNDPROC proc; wined3d_mutex_lock(); entry = wined3d_find_wndproc(window); if (!entry) { wined3d_mutex_unlock(); ERR("Window %p is not registered with wined3d.\n", window); return DefWindowProcW(window, message, wparam, lparam); } device = entry->device; proc = entry->proc; wined3d_mutex_unlock(); return device_process_message(device, window, message, wparam, lparam, proc); }