hwc: Minor bug fixes.

Some minor bug fixes.

Change-Id: Ie8c2f58b9c6db6e77739e4693da503f6f963827d
This commit is contained in:
Saurabh Shah
2012-09-16 16:05:58 -07:00
committed by Iliyan Malchev
parent 56f610dd23
commit 649cda6710
4 changed files with 27 additions and 15 deletions

View File

@@ -75,16 +75,23 @@ static void hwc_registerProcs(struct hwc_composer_device_1* dev,
init_uevent_thread(ctx); init_uevent_thread(ctx);
} }
//Helper
static void reset() {
//reset for this draw round
VideoOverlay::reset();
ExtOnly::reset();
UIMirrorOverlay::reset();
ExtOnly::reset();
//TODO MDPComp
}
static int hwc_prepare(hwc_composer_device_1 *dev, size_t numDisplays, static int hwc_prepare(hwc_composer_device_1 *dev, size_t numDisplays,
hwc_display_contents_1_t** displays) hwc_display_contents_1_t** displays)
{ {
hwc_context_t* ctx = (hwc_context_t*)(dev); hwc_context_t* ctx = (hwc_context_t*)(dev);
ctx->overlayInUse = false; ctx->overlayInUse = false;
//reset for this draw round reset();
VideoOverlay::reset();
ExtOnly::reset();
UIMirrorOverlay::reset();
//If securing of h/w in progress skip comp using overlay. //If securing of h/w in progress skip comp using overlay.
if(ctx->mSecuring == true) return 0; if(ctx->mSecuring == true) return 0;

View File

@@ -17,9 +17,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
#define DEBUG 0 #define UEVENT_DEBUG 0
#ifndef HWC_OBSERVER_H
#define HWC_OBSERVER_H
#include <hardware_legacy/uevent.h> #include <hardware_legacy/uevent.h>
#include <utils/Log.h> #include <utils/Log.h>
#include <sys/resource.h> #include <sys/resource.h>
@@ -43,7 +41,7 @@ static void handle_uevent(hwc_context_t* ctx, const char* udata, int len)
int hdmiconnected = ctx->mExtDisplay->getExternalDisplay(); int hdmiconnected = ctx->mExtDisplay->getExternalDisplay();
if(!strcasestr(str, "@/devices/virtual/graphics/fb")) { if(!strcasestr(str, "@/devices/virtual/graphics/fb")) {
ALOGD_IF(DEBUG, "%s: Not Ext Disp Event ", __FUNCTION__); ALOGD_IF(UEVENT_DEBUG, "%s: Not Ext Disp Event ", __FUNCTION__);
return; return;
} }
@@ -113,4 +111,3 @@ void init_uevent_thread(hwc_context_t* ctx)
} }
}; //namespace }; //namespace
#endif //HWC_OBSERVER_H

View File

@@ -52,7 +52,7 @@ bool VideoOverlay::prepare(hwc_context_t *ctx, hwc_display_contents_1_t *list) {
ccLayer = &list->hwLayers[sCCLayerIndex]; ccLayer = &list->hwLayers[sCCLayerIndex];
if(configure(ctx, yuvLayer, ccLayer)) { if(configure(ctx, yuvLayer, ccLayer)) {
markFlags(&list->hwLayers[sYuvLayerIndex]); markFlags(yuvLayer, ccLayer);
sIsModeOn = true; sIsModeOn = true;
} }
} }
@@ -90,15 +90,23 @@ void VideoOverlay::chooseState(hwc_context_t *ctx) {
ovutils::getStateString(sState)); ovutils::getStateString(sState));
} }
void VideoOverlay::markFlags(hwc_layer_1_t *layer) { void VideoOverlay::markFlags(hwc_layer_1_t *yuvLayer, hwc_layer_1_t *ccLayer) {
switch(sState) { switch(sState) {
case ovutils::OV_2D_VIDEO_ON_PANEL: case ovutils::OV_2D_VIDEO_ON_PANEL:
case ovutils::OV_2D_VIDEO_ON_PANEL_TV: case ovutils::OV_2D_VIDEO_ON_PANEL_TV:
layer->compositionType = HWC_OVERLAY; if(yuvLayer) {
layer->hints |= HWC_HINT_CLEAR_FB; yuvLayer->compositionType = HWC_OVERLAY;
yuvLayer->hints |= HWC_HINT_CLEAR_FB;
}
if(ccLayer) {
ccLayer->compositionType = HWC_OVERLAY;
}
break; break;
case ovutils::OV_2D_VIDEO_ON_TV: case ovutils::OV_2D_VIDEO_ON_TV:
break; //dont update flags. if(ccLayer) {
ccLayer->compositionType = HWC_OVERLAY;
}
break; //dont update video layer flags.
default: default:
break; break;
} }

View File

@@ -41,7 +41,7 @@ private:
static bool configure(hwc_context_t *ctx, hwc_layer_1_t *yuvlayer, static bool configure(hwc_context_t *ctx, hwc_layer_1_t *yuvlayer,
hwc_layer_1_t *ccLayer); hwc_layer_1_t *ccLayer);
//Marks layer flags if this feature is used //Marks layer flags if this feature is used
static void markFlags(hwc_layer_1_t *layer); static void markFlags(hwc_layer_1_t *yuvLayer, hwc_layer_1_t *ccLayer);
//returns yuv count //returns yuv count
static int getYuvCount(); static int getYuvCount();