]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/kernel-video.git/commitdiff
OMAPDSS: DSSCOMP: fix channel selection in gralloc_queue
authorSergiy Kibrik <sergiy.kibrik@globallogic.com>
Wed, 3 Apr 2013 20:16:07 +0000 (15:16 -0500)
committerPraneeth Bajjuri <praneeth@ti.com>
Fri, 12 Jul 2013 22:41:45 +0000 (17:41 -0500)
Channels don't always represent mgr_ix from setup data, e.g.
in case of HDMI as primary display channel used is 1 (tv), while
0 id is passed from userspace via overlay's config.

Change-Id: I20c7ac6f5283ffffc56641ec97cd21dfd701c6d7
Signed-off-by: Arthur Philpott <arthur.philpott@ti.com>
drivers/video/omap2/dsscomp/gralloc.c

index f48fc8f80ab48ed4d5ebf4dc33218e76514e4c30..3999aa1fc2e0c931b2c9b3a1418e1ba8e396eef5 100755 (executable)
@@ -325,14 +325,8 @@ int dsscomp_gralloc_queue(struct dsscomp_setup_dispc_data *d,
                struct dss2_ovl_info *oi = d->ovls + i;
                u32 size;
                int j;
-               ch = oi->cfg.mgr_ix;
-
-               /* skip overlays on compositions we could not create */
-               if (!comp[ch])
-                       continue;
-
                for (j = 0; j < d->num_mgrs; j++)
-                       if (d->mgrs[j].ix == ch) {
+                       if (d->mgrs[j].ix == oi->cfg.mgr_ix) {
                                /* swap red & blue if requested */
                                if (d->mgrs[j].swap_rb)
                                        swap_rb_in_ovl_info(d->ovls + i);
@@ -345,6 +339,10 @@ int dsscomp_gralloc_queue(struct dsscomp_setup_dispc_data *d,
                        continue;
                }
 
+               /* skip overlays on compositions we could not create */
+               ch = channels[j];
+               if (!comp[ch])
+                       continue;
                /* copy prior overlay to avoid mapping layers twice to 1D */
                if (oi->addressing == OMAP_DSS_BUFADDR_OVL_IX) {
                        unsigned int j = oi->ba;