@@ -73,10 +73,7 @@ bool Compositor::Draw(DisplayPlaneStateList &comp_planes,
7373 plane.GetSourceLayers ().begin (),
7474 plane.GetSourceLayers ().end ());
7575 }
76- } else if (plane.IsVideoPlane ()) {
77- dedicated_layers.insert (dedicated_layers.end (),
78- plane.GetSourceLayers ().begin (),
79- plane.GetSourceLayers ().end ());
76+ } else {
8077 media_state.emplace_back ();
8178 plane.SwapSurfaceIfNeeded ();
8279 DrawState &state = media_state.back ();
@@ -87,59 +84,79 @@ bool Compositor::Draw(DisplayPlaneStateList &comp_planes,
8784 media_state.scaling_mode_ = scaling_mode_;
8885 media_state.deinterlace_ = deinterlace_;
8986 lock_.unlock ();
90- const OverlayLayer &layer = layers[plane.GetSourceLayers ().at (0 )];
91- media_state.layer_ = &layer;
92- } else if (plane.NeedsOffScreenComposition ()) {
93- comp = &plane;
94- plane.SwapSurfaceIfNeeded ();
95- std::vector<CompositionRegion> &comp_regions =
96- plane.GetCompositionRegion ();
97- bool regions_empty = comp_regions.empty ();
98- NativeSurface *surface = plane.GetOffScreenTarget ();
99- if (surface == NULL ) {
100- ETRACE (" GetOffScreenTarget() returned NULL pointer 'surface'." );
101- return false ;
102- }
103- if (!regions_empty &&
104- (surface->ClearSurface () || surface->IsPartialClear () ||
105- surface->IsSurfaceDamageChanged ())) {
106- plane.ResetCompositionRegion ();
107- regions_empty = true ;
108- }
109-
110- if (surface->ClearSurface ()) {
111- plane.UpdateDamage (plane.GetDisplayFrame ());
112- }
113-
114- if (regions_empty) {
115- SeparateLayers (dedicated_layers, comp->GetSourceLayers (), display_frame,
116- surface->GetSurfaceDamage (), comp_regions);
117- }
118-
119- std::vector<size_t >().swap (dedicated_layers);
120- if (comp_regions.empty ())
121- continue ;
122-
123- draw_state.emplace_back ();
124- DrawState &state = draw_state.back ();
125- state.surface_ = surface;
126- size_t num_regions = comp_regions.size ();
127- state.states_ .reserve (num_regions);
128- bool use_plane_transform = false ;
129- if (plane.GetRotationType () ==
130- DisplayPlaneState::RotationType::kGPURotation ) {
131- use_plane_transform = true ;
132- }
133-
134- CalculateRenderState (layers, comp_regions, state,
135- plane.GetDownScalingFactor (),
136- plane.IsUsingPlaneScalar (), use_plane_transform);
137-
138- if (state.states_ .empty ()) {
139- draw_state.pop_back ();
87+ for (auto layer_id : plane.GetSourceLayers ()) {
88+ OverlayLayer *layer = &(layers.at (layer_id));
89+ media_state.layers_ .emplace_back (layer);
14090 }
14191 }
14292 }
93+ // } else if (plane.IsVideoPlane()) {
94+ // dedicated_layers.insert(dedicated_layers.end(),
95+ // plane.GetSourceLayers().begin(),
96+ // plane.GetSourceLayers().end());
97+ // media_state.emplace_back();
98+ // plane.SwapSurfaceIfNeeded();
99+ // DrawState &state = media_state.back();
100+ // state.surface_ = plane.GetOffScreenTarget();
101+ // MediaState &media_state = state.media_state_;
102+ // lock_.lock();
103+ // media_state.colors_ = colors_;
104+ // media_state.scaling_mode_ = scaling_mode_;
105+ // media_state.deinterlace_ = deinterlace_;
106+ // lock_.unlock();
107+ // const OverlayLayer &layer = layers[plane.GetSourceLayers().at(0)];
108+ // media_state.layer_ = &layer;
109+ // } else if (plane.NeedsOffScreenComposition()) {
110+ // comp = &plane;
111+ // plane.SwapSurfaceIfNeeded();
112+ // std::vector<CompositionRegion> &comp_regions =
113+ // plane.GetCompositionRegion();
114+ // bool regions_empty = comp_regions.empty();
115+ // NativeSurface *surface = plane.GetOffScreenTarget();
116+ // if (surface == NULL) {
117+ // ETRACE("GetOffScreenTarget() returned NULL pointer 'surface'.");
118+ // return false;
119+ // }
120+ // if (!regions_empty &&
121+ // (surface->ClearSurface() || surface->IsPartialClear() ||
122+ // surface->IsSurfaceDamageChanged())) {
123+ // plane.ResetCompositionRegion();
124+ // regions_empty = true;
125+ // }
126+
127+ // if (surface->ClearSurface()) {
128+ // plane.UpdateDamage(plane.GetDisplayFrame());
129+ // }
130+
131+ // if (regions_empty) {
132+ // SeparateLayers(dedicated_layers, comp->GetSourceLayers(), display_frame,
133+ // surface->GetSurfaceDamage(), comp_regions);
134+ // }
135+
136+ // std::vector<size_t>().swap(dedicated_layers);
137+ // if (comp_regions.empty())
138+ // continue;
139+
140+ // draw_state.emplace_back();
141+ // DrawState &state = draw_state.back();
142+ // state.surface_ = surface;
143+ // size_t num_regions = comp_regions.size();
144+ // state.states_.reserve(num_regions);
145+ // bool use_plane_transform = false;
146+ // if (plane.GetRotationType() ==
147+ // DisplayPlaneState::RotationType::kGPURotation) {
148+ // use_plane_transform = true;
149+ // }
150+
151+ // CalculateRenderState(layers, comp_regions, state,
152+ // plane.GetDownScalingFactor(),
153+ // plane.IsUsingPlaneScalar(), use_plane_transform);
154+
155+ // if (state.states_.empty()) {
156+ // draw_state.pop_back();
157+ // }
158+ // }
159+ // }
143160
144161 bool status = true ;
145162 if (!draw_state.empty () || !media_state.empty ())
0 commit comments