edid: use physical dimensions if available
Replace dpi with width_mm/height_mm in qemu_edid_info.
Use it when set (non-zero) to compute the DPI and generate the EDID.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-id: 20200927145751.365446-3-marcandre.lureau@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
diff --git a/qemu-edid.c b/qemu-edid.c
index 46eef70..1db3372 100644
--- a/qemu-edid.c
+++ b/qemu-edid.c
@@ -9,7 +9,10 @@
#include "qemu/cutils.h"
#include "hw/display/edid.h"
-static qemu_edid_info info;
+static qemu_edid_info info = (qemu_edid_info) {
+ .prefx = 1024,
+ .prefy = 768,
+};
static void usage(FILE *out)
{
@@ -39,6 +42,7 @@
{
FILE *outfile = NULL;
uint8_t blob[256];
+ uint32_t dpi = 100;
int rc;
for (;;) {
@@ -83,7 +87,7 @@
}
break;
case 'd':
- if (qemu_strtoui(optarg, NULL, 10, &info.dpi) < 0) {
+ if (qemu_strtoui(optarg, NULL, 10, &dpi) < 0) {
fprintf(stderr, "not a number: %s\n", optarg);
exit(1);
}
@@ -110,6 +114,9 @@
outfile = stdout;
}
+ info.width_mm = qemu_edid_dpi_to_mm(dpi, info.prefx);
+ info.height_mm = qemu_edid_dpi_to_mm(dpi, info.prefy);
+
memset(blob, 0, sizeof(blob));
qemu_edid_generate(blob, sizeof(blob), &info);
fwrite(blob, sizeof(blob), 1, outfile);