static tdm_error
_tdm_display_update_layer(tdm_private_display *private_display,
tdm_private_output *private_output,
- tdm_layer *layer_backend)
+ tdm_layer *layer_backend, int index)
{
tdm_private_layer *private_layer;
tdm_error ret;
TDM_RETURN_VAL_IF_FAIL(private_layer != NULL, TDM_ERROR_OUT_OF_MEMORY);
LIST_ADDTAIL(&private_layer->link, &private_output->layer_list);
+ private_layer->index = index;
private_layer->private_display = private_display;
private_layer->private_output = private_output;
private_layer->layer_backend = layer_backend;
private_output->current_dpms_value = TDM_OUTPUT_DPMS_OFF;
private_output->output_backend = output_backend;
private_output->pipe = pipe;
+ private_output->index = pipe;
LIST_INITHEAD(&private_output->layer_list);
LIST_INITHEAD(&private_output->capture_list);
goto failed_update;
for (i = 0; i < layer_count; i++) {
- ret = _tdm_display_update_layer(private_display, private_output, layers[i]);
+ ret = _tdm_display_update_layer(private_display, private_output, layers[i], i);
if (ret != TDM_ERROR_NONE)
goto failed_update;
}
tdm_display_get_output(tdm_display *dpy, int index, tdm_error *error)
{
tdm_private_output *private_output = NULL;
- int i = 0;
DISPLAY_FUNC_ENTRY_ERROR();
if (error)
*error = TDM_ERROR_NONE;
- i = 0;
LIST_FOR_EACH_ENTRY(private_output, &private_display->output_list, link) {
- if (i == index) {
+ if (private_output->index == index) {
_pthread_mutex_unlock(&private_display->lock);
return private_output;
}
- i++;
}
_pthread_mutex_unlock(&private_display->lock);
tdm_output_get_layer(tdm_output *output, int index, tdm_error *error)
{
tdm_private_layer *private_layer = NULL;
- int i = 0;
OUTPUT_FUNC_ENTRY_ERROR();
*error = TDM_ERROR_NONE;
LIST_FOR_EACH_ENTRY(private_layer, &private_output->layer_list, link) {
- if (i == index) {
+ if (private_layer->index == index) {
_pthread_mutex_unlock(&private_display->lock);
return private_layer;
}
- i++;
}
_pthread_mutex_unlock(&private_display->lock);
struct _tdm_private_output {
struct list_head link;
+ int index;
unsigned long stamp;
tdm_private_display *private_display;
struct _tdm_private_layer {
struct list_head link;
+ int index;
+
tdm_private_display *private_display;
tdm_private_output *private_output;