diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index 247c810ef8..a46cf3b6d5 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -92,8 +92,175 @@ extern void *dinput_wgl; extern void *dinput; #endif -typedef LONG(CALLBACK* QUERYDISPLAYCONFIG)(UINT32, UINT32*, DISPLAYCONFIG_PATH_INFO*, UINT32*, DISPLAYCONFIG_MODE_INFO*, DISPLAYCONFIG_TOPOLOGY_ID*); -typedef LONG(CALLBACK* GETDISPLAYCONFIGBUFFERSIZES)(UINT32, UINT32*, UINT32*); +typedef enum { + DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED_CUSTOM = 0, + DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE_CUSTOM = 1, + DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_CUSTOM = 2, + DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST_CUSTOM = DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_CUSTOM, + DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST_CUSTOM = 3, + DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32_CUSTOM = 0xFFFFFFFF +} DISPLAYCONFIG_SCANLINE_ORDERING_CUSTOM; + +typedef enum { + DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE_CUSTOM = 1, + DISPLAYCONFIG_MODE_INFO_TYPE_TARGET_CUSTOM = 2, + DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE_CUSTOM = 3, + DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32_CUSTOM = 0xFFFFFFFF +} DISPLAYCONFIG_MODE_INFO_TYPE_CUSTOM; + +typedef enum { + DISPLAYCONFIG_PIXELFORMAT_8BPP_CUSTOM = 1, + DISPLAYCONFIG_PIXELFORMAT_16BPP_CUSTOM = 2, + DISPLAYCONFIG_PIXELFORMAT_24BPP_CUSTOM = 3, + DISPLAYCONFIG_PIXELFORMAT_32BPP_CUSTOM = 4, + DISPLAYCONFIG_PIXELFORMAT_NONGDI_CUSTOM = 5, + DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32_CUSTOM = 0xffffffff +} DISPLAYCONFIG_PIXELFORMAT_CUSTOM; + +typedef enum { + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER_CUSTOM = -1, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15_CUSTOM = 0, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO_CUSTOM = 1, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO_CUSTOM = 2, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO_CUSTOM = 3, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI_CUSTOM = 4, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI_CUSTOM = 5, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS_CUSTOM = 6, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN_CUSTOM = 8, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI_CUSTOM = 9, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL_CUSTOM = 10, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED_CUSTOM = 11, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL_CUSTOM = 12, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED_CUSTOM = 13, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE_CUSTOM = 14, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST_CUSTOM = 15, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL_CUSTOM = 0x80000000, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32_CUSTOM = 0xFFFFFFFF +} DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY_CUSTOM; + +typedef enum { + DISPLAYCONFIG_ROTATION_IDENTITY_CUSTOM = 1, + DISPLAYCONFIG_ROTATION_ROTATE90_CUSTOM = 2, + DISPLAYCONFIG_ROTATION_ROTATE180_CUSTOM = 3, + DISPLAYCONFIG_ROTATION_ROTATE270_CUSTOM = 4, + DISPLAYCONFIG_ROTATION_FORCE_UINT32_CUSTOM = 0xFFFFFFFF +} DISPLAYCONFIG_ROTATION_CUSTOM; + +typedef enum { + DISPLAYCONFIG_SCALING_IDENTITY_CUSTOM = 1, + DISPLAYCONFIG_SCALING_CENTERED_CUSTOM = 2, + DISPLAYCONFIG_SCALING_STRETCHED_CUSTOM = 3, + DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX_CUSTOM = 4, + DISPLAYCONFIG_SCALING_CUSTOM_CUSTOM = 5, + DISPLAYCONFIG_SCALING_PREFERRED_CUSTOM = 128, + DISPLAYCONFIG_SCALING_FORCE_UINT32_CUSTOM = 0xFFFFFFFF +} DISPLAYCONFIG_SCALING_CUST; + +typedef enum { + DISPLAYCONFIG_TOPOLOGY_INTERNAL_CUSTOM = 0x00000001, + DISPLAYCONFIG_TOPOLOGY_CLONE_CUSTOM = 0x00000002, + DISPLAYCONFIG_TOPOLOGY_EXTEND_CUSTOM = 0x00000004, + DISPLAYCONFIG_TOPOLOGY_EXTERNAL_CUSTOM = 0x00000008, + DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32_CUSTOM = 0xFFFFFFFF +} DISPLAYCONFIG_TOPOLOGY_ID_CUSTOM; + +typedef struct DISPLAYCONFIG_RATIONAL_CUSTOM { + UINT32 Numerator; + UINT32 Denominator; +} DISPLAYCONFIG_RATIONAL_CUSTOM; + +typedef struct DISPLAYCONFIG_2DREGION_CUSTOM { + UINT32 cx; + UINT32 cy; +} DISPLAYCONFIG_2DREGION_CUSTOM; + +typedef struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO_CUSTOM { + UINT64 pixelRate; + DISPLAYCONFIG_RATIONAL_CUSTOM hSyncFreq; + DISPLAYCONFIG_RATIONAL_CUSTOM vSyncFreq; + DISPLAYCONFIG_2DREGION_CUSTOM activeSize; + DISPLAYCONFIG_2DREGION_CUSTOM totalSize; + union { + struct { + UINT32 videoStandard :16; + UINT32 vSyncFreqDivider :6; + UINT32 reserved :10; + } AdditionalSignalInfo; + UINT32 videoStandard; + }; + DISPLAYCONFIG_SCANLINE_ORDERING_CUSTOM scanLineOrdering; +} DISPLAYCONFIG_VIDEO_SIGNAL_INFO_CUSTOM; + +typedef struct DISPLAYCONFIG_TARGET_MODE_CUSTOM { + DISPLAYCONFIG_VIDEO_SIGNAL_INFO_CUSTOM targetVideoSignalInfo; +} DISPLAYCONFIG_TARGET_MODE_CUSTOM; + +typedef struct DISPLAYCONFIG_PATH_SOURCE_INFO_CUSTOM { + LUID adapterId; + UINT32 id; + union { + UINT32 modeInfoIdx; + struct { + UINT32 cloneGroupId :16; + UINT32 sourceModeInfoIdx :16; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + UINT32 statusFlags; +} DISPLAYCONFIG_PATH_SOURCE_INFO_CUSTOM; + +typedef struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO_CUSTOM { + POINTL PathSourceSize; + RECTL DesktopImageRegion; + RECTL DesktopImageClip; +} DISPLAYCONFIG_DESKTOP_IMAGE_INFO_CUSTOM; + +typedef struct DISPLAYCONFIG_SOURCE_MODE_CUSTOM { + UINT32 width; + UINT32 height; + DISPLAYCONFIG_PIXELFORMAT_CUSTOM pixelFormat; + POINTL position; +} DISPLAYCONFIG_SOURCE_MODE_CUSTOM; + +typedef struct DISPLAYCONFIG_MODE_INFO_CUSTOM { + DISPLAYCONFIG_MODE_INFO_TYPE_CUSTOM infoType; + UINT32 id; + LUID adapterId; + union { + DISPLAYCONFIG_TARGET_MODE_CUSTOM targetMode; + DISPLAYCONFIG_SOURCE_MODE_CUSTOM sourceMode; + DISPLAYCONFIG_DESKTOP_IMAGE_INFO_CUSTOM desktopImageInfo; + }; +} DISPLAYCONFIG_MODE_INFO_CUSTOM; + +typedef struct DISPLAYCONFIG_PATH_TARGET_INFO_CUSTOM { + LUID adapterId; + UINT32 id; + union { + UINT32 modeInfoIdx; + struct { + UINT32 desktopModeInfoIdx :16; + UINT32 targetModeInfoIdx :16; + }; + }; + DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY_CUSTOM outputTechnology; + DISPLAYCONFIG_ROTATION_CUSTOM rotation; + DISPLAYCONFIG_SCALING_CUST scaling; + DISPLAYCONFIG_RATIONAL_CUSTOM refreshRate; + DISPLAYCONFIG_SCANLINE_ORDERING_CUSTOM scanLineOrdering; + BOOL targetAvailable; + UINT32 statusFlags; +} DISPLAYCONFIG_PATH_TARGET_INFO_CUSTOM; + + + +typedef struct DISPLAYCONFIG_PATH_INFO_CUSTOM { + DISPLAYCONFIG_PATH_SOURCE_INFO_CUSTOM sourceInfo; + DISPLAYCONFIG_PATH_TARGET_INFO_CUSTOM targetInfo; + UINT32 flags; +} DISPLAYCONFIG_PATH_INFO_CUSTOM; + +typedef LONG (*QUERYDISPLAYCONFIG)(UINT32, UINT32*, DISPLAYCONFIG_PATH_INFO_CUSTOM*, UINT32*, DISPLAYCONFIG_MODE_INFO_CUSTOM*, DISPLAYCONFIG_TOPOLOGY_ID_CUSTOM*); +typedef LONG (*GETDISPLAYCONFIGBUFFERSIZES)(UINT32, UINT32*, UINT32*); static bool g_resized = false; bool g_restore_desktop = false; @@ -1273,11 +1440,11 @@ float win32_get_refresh_rate(void *data) float refresh_rate = 0.0f; #if _WIN32_WINNT >= 0x0601 || _WIN32_WINDOWS >= 0x0601 /* Win 7 */ OSVERSIONINFO version_info; - DISPLAYCONFIG_TOPOLOGY_ID TopologyID; + DISPLAYCONFIG_TOPOLOGY_ID_CUSTOM TopologyID; unsigned int NumPathArrayElements = 0; unsigned int NumModeInfoArrayElements = 0; - DISPLAYCONFIG_PATH_INFO *PathInfoArray = NULL; - DISPLAYCONFIG_MODE_INFO *ModeInfoArray = NULL; + DISPLAYCONFIG_PATH_INFO_CUSTOM *PathInfoArray = NULL; + DISPLAYCONFIG_MODE_INFO_CUSTOM *ModeInfoArray = NULL; int result = 0; #ifdef HAVE_DYNAMIC static QUERYDISPLAYCONFIG pQueryDisplayConfig; @@ -1307,10 +1474,10 @@ float win32_get_refresh_rate(void *data) if (result != ERROR_SUCCESS) return refresh_rate; - PathInfoArray = (DISPLAYCONFIG_PATH_INFO *) - malloc(sizeof(DISPLAYCONFIG_PATH_INFO) * NumPathArrayElements); - ModeInfoArray = (DISPLAYCONFIG_MODE_INFO *) - malloc(sizeof(DISPLAYCONFIG_MODE_INFO) * NumModeInfoArrayElements); + PathInfoArray = (DISPLAYCONFIG_PATH_INFO_CUSTOM *) + malloc(sizeof(DISPLAYCONFIG_PATH_INFO_CUSTOM) * NumPathArrayElements); + ModeInfoArray = (DISPLAYCONFIG_MODE_INFO_CUSTOM *) + malloc(sizeof(DISPLAYCONFIG_MODE_INFO_CUSTOM) * NumModeInfoArrayElements); result = pQueryDisplayConfig(QDC_DATABASE_CURRENT, &NumPathArrayElements, diff --git a/verbosity.c b/verbosity.c index b55de6e883..7b76838eb1 100644 --- a/verbosity.c +++ b/verbosity.c @@ -213,17 +213,18 @@ void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap) void RARCH_LOG_BUFFER(uint8_t *data, size_t size) { - int i, offset; + unsigned i, offset; int padding = size % 16; uint8_t buf[16]; RARCH_LOG("== %d-byte buffer ==================\n", size); + for(i = 0, offset = 0; i < size; i++) { buf[offset] = data[i]; offset++; - if(offset == 16) + if (offset == 16) { offset = 0; RARCH_LOG("%02x%02x%02x%02x%02x%02x%02x%02x %02x%02x%02x%02x%02x%02x%02x%02x\n",