void fullscreen_getmodes_dx9(void) { int adapter, numAdapter, mode, numAdapterModes; D3DADAPTER_IDENTIFIER9 d3didentifier; D3DDISPLAYMODE displayMode; DirectDrawDeviceList *new_device; DirectDrawDeviceList *search_device; DirectDrawModeList *new_mode; DirectDrawModeList *search_mode; numAdapter = 0; while (D3D_OK == IDirect3D9_GetAdapterIdentifier(d3d, numAdapter, 0, &d3didentifier)) { new_device = lib_malloc(sizeof(DirectDrawDeviceList)); new_device->next = NULL; new_device->desc = util_concat(d3didentifier.DeviceName, " - ", d3didentifier.Description, NULL); if (dx9_devices == NULL) { dx9_devices = new_device; } else { search_device = dx9_devices; while (search_device->next != NULL) { search_device = search_device->next; } search_device->next = new_device; } numAdapter++; } for (adapter = 0; adapter < numAdapter; adapter++) { numAdapterModes = IDirect3D9_GetAdapterModeCount(d3d, adapter, D3DFMT_X8R8G8B8); for (mode = 0; mode < numAdapterModes; mode++) { if (S_OK == IDirect3D9_EnumAdapterModes(d3d, adapter, D3DFMT_X8R8G8B8, mode, &displayMode)) { new_mode = lib_malloc(sizeof(DirectDrawModeList)); new_mode->next = NULL; new_mode->devicenumber = adapter; new_mode->width = displayMode.Width; new_mode->height = displayMode.Height; new_mode->bitdepth = 32; new_mode->refreshrate = displayMode.RefreshRate; if (dx9_modes == NULL) { dx9_modes = new_mode; } else { search_mode = dx9_modes; while (search_mode->next != NULL) { search_mode = search_mode->next; } search_mode->next = new_mode; } } } } }
static UINT get_adapter_mode_count(base *d3dptr, UINT adapter, D3DFORMAT format) { IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; return IDirect3D9_GetAdapterModeCount(d3d9, adapter, format); }