static bool android_gfx_ctx_get_metrics(void *data, enum display_metric_types type, float *value) { int dpi; char density[PROP_VALUE_MAX] = {0}; dpi_get_density(density, sizeof(density)); switch (type) { case DISPLAY_METRIC_MM_WIDTH: return false; case DISPLAY_METRIC_MM_HEIGHT: return false; case DISPLAY_METRIC_DPI: if (density[0] == '\0') return false; dpi = atoi(density); *value = (float)dpi; break; case DISPLAY_METRIC_NONE: default: *value = 0; return false; } return true; }
static bool android_gfx_ctx_get_metrics(void *data, enum display_metric_types type, float *value) { static int dpi = -1; switch (type) { case DISPLAY_METRIC_MM_WIDTH: return false; case DISPLAY_METRIC_MM_HEIGHT: return false; case DISPLAY_METRIC_DPI: if (dpi == -1) { char density[PROP_VALUE_MAX]; density[0] = '\0'; dpi_get_density(density, sizeof(density)); if (string_is_empty(density)) goto dpi_fallback; dpi = atoi(density); if (dpi <= 0) goto dpi_fallback; } *value = (float)dpi; break; case DISPLAY_METRIC_NONE: default: *value = 0; return false; } return true; dpi_fallback: /* add a fallback in case the device doesn't report DPI. * Hopefully fixes issues with the moto G2. */ dpi = 90; *value = (float)dpi; return true; }
static bool gfx_ctx_qnx__get_metrics(void *data, enum display_metric_types type, float *value) { static int dpi = -1; qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)data; switch (type) { case DISPLAY_METRIC_MM_WIDTH: return false; case DISPLAY_METRIC_MM_HEIGHT: return false; case DISPLAY_METRIC_DPI: if (dpi == -1) { dpi = dpi_get_density(qnx); if (dpi <= 0) goto dpi_fallback; } *value = (float)dpi; break; case DISPLAY_METRIC_NONE: default: *value = 0; return false; } return true; dpi_fallback: /* Add a fallback in case the device doesn't report DPI. * Calculated as an average of all BB10 device DPIs circa 2016. */ dpi = 345; *value = (float)dpi; return true; }