summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmre Ucan <eucan@de.adit-jv.com>2016-06-22 09:22:36 +0200
committerWataru Natsume <wataru_natsume@xddp.denso.co.jp>2016-06-28 15:21:43 +0900
commit851078b7bf499c334e8799f5cee181f1156f9907 (patch)
tree89f6aef445a0ccf5757c434fd7d50f0f01f65a5b
parent94ed87fc6901e380b7849b2c78db5bfe5affcc3f (diff)
downloadwayland-ivi-extension-851078b7bf499c334e8799f5cee181f1156f9907.tar.gz
layer-add-surfaces: choose display with highest resolution
Currently, the display 0 is used in layer-add-surfaces. It is better to use the display with highest resolution than using a hard-coded ID. Because the highest display is most likely the main display. Signed-off-by: Emre Ucan <eucan@de.adit-jv.com>
-rw-r--r--ivi-layermanagement-examples/layer-add-surfaces/src/layer-add-surfaces.c40
1 files changed, 35 insertions, 5 deletions
diff --git a/ivi-layermanagement-examples/layer-add-surfaces/src/layer-add-surfaces.c b/ivi-layermanagement-examples/layer-add-surfaces/src/layer-add-surfaces.c
index 5be857b..aaff7de 100644
--- a/ivi-layermanagement-examples/layer-add-surfaces/src/layer-add-surfaces.c
+++ b/ivi-layermanagement-examples/layer-add-surfaces/src/layer-add-surfaces.c
@@ -91,6 +91,37 @@ static void callbackFunction(ilmObjectType object, t_ilm_uint id, t_ilm_bool cre
}
}
+/* Choose the display with the largest resolution.*/
+static t_ilm_uint choose_screen(void)
+{
+ struct ilmScreenProperties screenProperties;
+ t_ilm_uint* screen_IDs = NULL;
+ t_ilm_uint screen_ID = 0;
+ t_ilm_uint screen_count = NULL;
+ t_ilm_uint choosen_width = 0;
+ t_ilm_uint choosen_height = 0;
+ int i;
+
+ ilm_getScreenIDs(&screen_count, &screen_IDs);
+
+ for (i = 0; i<screen_count; i++)
+ {
+ ilm_getPropertiesOfScreen(screen_IDs[i], &screenProperties);
+ if (screenProperties.screenWidth > choosen_width) {
+ choosen_width = screenProperties.screenWidth;
+ choosen_height = screenProperties.screenHeight;
+ screen_ID = screen_IDs[i];
+ }
+ }
+
+ screenWidth = choosen_width;
+ screenHeight = choosen_height;
+
+ free(screen_IDs);
+
+ return screen_ID;
+}
+
int main (int argc, const char * argv[])
{
// Get command-line options
@@ -124,18 +155,17 @@ int main (int argc, const char * argv[])
pthread_mutexattr_destroy(&a);
- struct ilmScreenProperties screenProperties;
t_ilm_layer renderOrder[1];
+ t_ilm_uint screen_ID;
renderOrder[0] = layer;
ilm_init();
- ilm_getPropertiesOfScreen(0, &screenProperties);
- screenWidth = screenProperties.screenWidth;
- screenHeight = screenProperties.screenHeight;
+
+ screen_ID = choose_screen();
ilm_layerCreateWithDimension(&layer, screenWidth, screenHeight);
printf("CreateWithDimension: layer ID (%d), Width (%u), Height (%u)\n", layer, screenWidth, screenHeight);
ilm_layerSetVisibility(layer,ILM_TRUE);
printf("SetVisibility : layer ID (%d), ILM_TRUE\n", layer);
- ilm_displaySetRenderOrder(0,renderOrder,1);
+ ilm_displaySetRenderOrder(screen_ID, renderOrder, 1);
ilm_commitChanges();
ilm_registerNotification(callbackFunction, NULL);