Ejemplo n.º 1
0
UINT32 osdwnd_hidewnd(PGUI_WINDOW pwnd,UINT32 param)
{//clear wnd
	UINT32 i;
	PGUI_VSCR	pvscr;
	PGUI_REGION 	prgn;
	PGUI_OBJWND wndobj;
	//TODO:windows clear code
	
	if(gelib_get_wndmonitor()&&g_wndrects_cnt)
	{
		wndobj = (PGUI_OBJWND)param;
		for(i = 0;i < g_wndrects_idx;i++)
		{
			if(MEMCMP(&(wndobj->frame),&(g_wnd_rects[i]),sizeof(GUI_RECT)) == 0)
			{
				MEMSET(&(g_wnd_rects[i]),0x0,sizeof(GUI_RECT));

				if(g_wndrects_cnt > 0)
					g_wndrects_cnt--;
			}
		}

		if(gelib_wndrects_showoff() && g_osdwnd_onoff)
		{
			pvscr = OSD_GetTaskVscr(osal_task_get_current_id());
			prgn = gelib_getdstrgn(pvscr->dst_layer,pvscr->dst_rgn);
			ge_show_onoff((struct ge_device *)gui_dev,(ge_surface_desc_t *)prgn->hsurf,0);
			if(gelib_getdual_support())
			{
				prgn = gelib_getdstrgn(GUI_SLVGMA_SURF,0);
				ge_show_onoff_deo((struct ge_device *)gui_dev,(ge_surface_desc_t *)prgn->hsurf,0);
			}			
			
			g_osdwnd_onoff = 0;
		}
	}
	else if((g_wndrects_cnt == 0)&&(g_wnd_monitors == 1))
	{
		if(gelib_wndrects_showoff() && g_osdwnd_onoff)
		{
			pvscr = OSD_GetTaskVscr(osal_task_get_current_id());
			prgn = gelib_getdstrgn(pvscr->dst_layer,pvscr->dst_rgn);
			ge_show_onoff((struct ge_device *)gui_dev,(ge_surface_desc_t *)prgn->hsurf,0);
			
			g_osdwnd_onoff = 0;
		}
	}
	
	return 0;
}
Ejemplo n.º 2
0
UINT32 osdwnd_showwnd(PGUI_WINDOW pwnd,UINT32 param)
{
	UINT32 i,bfind;
	PGUI_REGION 	prgn;
	PGUI_VSCR	pvscr;
	PGUI_OBJWND wndobj;
	
	i = 0;
	if(gelib_get_wndmonitor())
	{
		bfind = 0;
		wndobj = (PGUI_OBJWND)param;
		if(g_wndrects_cnt>0)
		{
			for(i=0;i<g_wndrects_idx;i++)
			{
				if(MEMCMP(&(wndobj->frame),&(g_wnd_rects[i]),sizeof(GUI_RECT)) == 0)
				{
					bfind = 1;
					break;
				}
			}
		}

		if((gelib_wndrects_valid())&&( bfind==0))
		{
			MEMCPY(&(g_wnd_rects[g_wndrects_idx]),&(wndobj->frame),sizeof(GUI_RECT));
			g_wndrects_idx++;
			g_wndrects_cnt++;
		}

		if(gelib_wndrects_full())
		{//wndrects is not enough
			gelib_disable_wnd_monitors(1);
		}
		else if(gelib_wndrects_valid()==0)
		{
			osdwnd_reclaim_rects();
		}
		
		if(gelib_wndrects_showon() && (g_osdwnd_onoff == 0))
		{
			pvscr = OSD_GetTaskVscr(osal_task_get_current_id());
			prgn = gelib_getdstrgn(pvscr->dst_layer,pvscr->dst_rgn);
			ge_show_onoff((struct ge_device *)gui_dev,(ge_surface_desc_t *)prgn->hsurf,1);

			if(gelib_getdual_support())
			{
				prgn = gelib_getdstrgn(GUI_SLVGMA_SURF,0);
				ge_show_onoff_deo((struct ge_device *)gui_dev,(ge_surface_desc_t *)prgn->hsurf,1);
			}

			g_osdwnd_onoff = 1;
		}
	}

	return i;
}
Ejemplo n.º 3
0
UINT32 gelib_disable_wnd_monitors(UINT32 onoff)
{
	PGUI_VSCR	pvscr;
	PGUI_REGION 	prgn;
	
	g_wnd_monitors = 0;
	
	g_wndrects_idx = 0;
	g_wndrects_cnt = 0;
	g_osdwnd_onoff = 1;
	MEMSET(g_wnd_rects,0x0,sizeof(g_wnd_rects));
	
	pvscr = OSD_GetTaskVscr(osal_task_get_current_id());
	prgn = gelib_getdstrgn(pvscr->dst_layer,pvscr->dst_rgn);
	ge_show_onoff((struct ge_device *)gui_dev,(ge_surface_desc_t *)prgn->hsurf,onoff);

	if(gelib_getdual_support())
	{
		prgn = gelib_getdstrgn(GUI_SLVGMA_SURF,0);
		ge_show_onoff_deo((struct ge_device *)gui_dev,(ge_surface_desc_t *)prgn->hsurf,1);
	}
	return 0;
}
Ejemplo n.º 4
0
static PSD ALI_OSD_openGE(PSD psd)
{

	ge_region_t region_para;
	ge_rect_t dst_rect;
	INT32 pitch = 0;
	ge_anti_flick_t af;

	
	psd->xres = psd->xvirtres = ALI_SCREEN_WIDTH;
	psd->yres = psd->yvirtres = ALI_SCREEN_HEIGHT;
	psd->bpp = 8;
	psd->ncolors = 1<<8;
	psd->linelen = (psd->xres * psd->bpp) >> 3;
	psd->size = psd->yres * psd->linelen;
	//psd->gr_mode = 15;

	psd->planes = 1;
	psd->pixtype = 0;
	psd->flags = PSF_SCREEN;


	//ge open
	ge_dev = (struct ge_device*)dev_get_by_id(HLD_DEV_TYPE_GE, 0);
	if (SUCCESS != ge_open(ge_dev))
	{
	    printf("%s() ge_open failed\n", __FUNCTION__);
	    return  (PSD)(- 1);
	}
    
	gfx_dst = NULL;

	memset((UINT8 *)&gfx_src, 0, sizeof(ge_surface_desc_t));


    pitch = ALI_SCREEN_WIDTH;
    region_para.pixel_fmt = GE_PF_CLUT8;

	gfx_src.width = ALI_SCREEN_WIDTH;
	gfx_src.height = ALI_SCREEN_HEIGHT;
	gfx_src.pitch = pitch; 
	gfx_src.endian = GE_PIXEL_LITTLE_ENDIAN;
	gfx_src.alpha_range = GE_LARGE_ALPHA;	

	gfx_dst = ge_create_surface(ge_dev, &gfx_src, 0, GMA_HW_SURFACE_1);	
	
	
    if(NULL==gfx_dst)
    {
        printf("%s() ge_create_surface fail!\n", __FUNCTION__);
        return  (PSD)(- 1);        
    }	
	dst_rect.left = 0;
	dst_rect.top = 0;
	dst_rect.width = ALI_SCREEN_WIDTH;
	dst_rect.height = ALI_SCREEN_HEIGHT;

	region_para.glob_alpha_en = 0;
	region_para.glob_alpha = 0x7f;
	region_para.pallet_seg = 0;
	region_para.pitch = pitch;
	region_para.pixel_fmt = GE_PF_CLUT8;

	region_para.dst_rect_29e.top = 0;
	region_para.dst_rect_29e.left = 0;
	region_para.dst_rect_29e.width = 720;
	region_para.dst_rect_29e.height = 480;

	if(RET_SUCCESS!=ge_create_region(ge_dev, gfx_dst, 0, &dst_rect, &region_para))
	{
        printf("%s() ge_create_region fail!\n", __FUNCTION__);
        return (PSD)(- 1);         
	}
#if 0
	memset((UINT8 *)&gfx_src, 0, sizeof(ge_surface_desc_t));


    pitch = ALI_SCREEN_WIDTH;
    region_para.pixel_fmt = GE_PF_CLUT8;

	gfx_src.width = ALI_SCREEN_WIDTH;
	gfx_src.height = ALI_SCREEN_HEIGHT;
	gfx_src.pitch = pitch; 
	gfx_src.endian = GE_PIXEL_LITTLE_ENDIAN;
	gfx_src.alpha_range = GE_LARGE_ALPHA;	

	gfx_bmp = ge_create_surface(ge_dev, &gfx_src, 0, GMA_MEM_SURFACE);	
	
    pitch = ALI_SCREEN_WIDTH;
    region_para.pixel_fmt = GE_PF_CLUT8;


	
    if(NULL==gfx_bmp)
    {
        printf("%s() ge_create_surface fail!\n", __FUNCTION__);
        return  - 1;        
    }	
	dst_rect.left = 0;
	dst_rect.top = 0;
	dst_rect.width = ALI_SCREEN_WIDTH;
	dst_rect.height = ALI_SCREEN_HEIGHT;

	region_para.glob_alpha_en = 0;
	region_para.glob_alpha = 0x7f;
	region_para.pallet_seg = 0;
	region_para.pitch = pitch;
	region_para.pixel_fmt = GE_PF_CLUT8;

	if(RET_SUCCESS!=ge_create_region(ge_dev, gfx_bmp, 0, &dst_rect, &region_para))
	{
        printf("%s() ge_create_region fail!\n", __FUNCTION__);
        return  - 1;         
	}
#endif	
   memcpy((UINT8 *)&gfx_src, gfx_dst, sizeof(ge_surface_desc_t));
	gfx_src.surf_id =2;


    af.layer = GMA_HW_SURFACE_1;
    af.valid = 1;
    ge_io_ctrl(ge_dev,GE_IO_ANTI_FLICK_29E,(UINT32)&af);
    ge_fill_rect(ge_dev,gfx_dst,&dst_rect,0);


    
	ge_show_onoff(ge_dev, gfx_dst, 1);
		
	return &scrdev;
}
Ejemplo n.º 5
0
/* called from keyboard/mouse/screen */
static PSD ALI_OSD_open1555(PSD psd)
{
	struct OSDRect tOpenRect, osdrect;
	enum OSDSys eOSDSys;
	struct OSDPara tOpenPara;
	enum TVSystem tvsys;
	
	psd->xres = psd->xvirtres = ALI_SCREEN_WIDTH;
	psd->yres = psd->yvirtres = ALI_SCREEN_HEIGHT;
	psd->bpp = 16;
	psd->ncolors = 1<<16;
	psd->linelen = (psd->xres * psd->bpp) >> 3;
	psd->size = psd->yres * psd->linelen;
	psd->gr_mode = 15;

	psd->planes = 1;
	psd->pixtype = 0;
	psd->flags = PSF_SCREEN;


	ge_region_t region_para;
	ge_rect_t dst_rect;
	INT32 pitch = 0;
	ge_anti_flick_t af;

	//ge open
	ge_dev = (struct ge_device*)dev_get_by_id(HLD_DEV_TYPE_GE, 0);
	if (SUCCESS != ge_open(ge_dev))
	{
	    printf("%s() ge_open failed\n", __FUNCTION__);
	    return  (PSD)(- 1);
	}
    
	gfx_dst = NULL;
//	gfx_buf = NULL;
	memset((UINT8 *)&gfx_src, 0, sizeof(ge_surface_desc_t));

	//if (sys_ic_get_rev_id() >= IC_REV_2)
	{
        pitch = ALI_SCREEN_WIDTH<<1;
        region_para.pixel_fmt = GE_PF_ARGB1555;
	}
	//else
	{
  //      pitch = 4*ALI_SCREEN_WIDTH;
  //      region_para.pixel_fmt = GE_PF_AYCBCR8888;
	}
	
	gfx_src.width = ALI_SCREEN_WIDTH;
	gfx_src.height = ALI_SCREEN_HEIGHT;
	gfx_src.pitch = pitch; 
	gfx_src.endian = GE_PIXEL_LITTLE_ENDIAN;
	gfx_src.alpha_range = GE_LARGE_ALPHA;	
	/*A surface is a real display layer in HW*/
	gfx_dst = ge_create_surface(ge_dev, &gfx_src, 0, GMA_HW_SURFACE_1);	
	
    if(NULL==gfx_dst)
    {
        printf("%s() ge_create_surface fail!\n", __FUNCTION__);
        return  (PSD)(- 1);        
    }	
	dst_rect.left = 0;
	dst_rect.top = 0;
	dst_rect.width = ALI_SCREEN_WIDTH;
	dst_rect.height = ALI_SCREEN_HEIGHT;

	region_para.glob_alpha_en = 0;
	region_para.glob_alpha = 0x7f;
	region_para.pallet_seg = 0;
	region_para.pitch = pitch;
	

	if(RET_SUCCESS!=ge_create_region(ge_dev, gfx_dst, 0, &dst_rect, &region_para))
	{
        printf("%s() ge_create_region fail!\n", __FUNCTION__);
        return  (PSD)(- 1);         
	}

    
//	if (sys_ic_get_rev_id() >= IC_REV_2)
	{
        //enable the anti-flick
	    af.layer = GMA_HW_SURFACE_1;
	    af.valid = 1;
	    ge_io_ctrl(ge_dev,GE_IO_ANTI_FLICK_29E,(UINT32)&af);
	    ge_fill_rect(ge_dev,gfx_dst,&dst_rect,0);
	}
//	else
	{
		/*Fill the rectangle of this region with defined color. the color data sequence is A-Cr-Y-Cb from high to low when 32bits*/
//s		ge_fill_rect(ge_dev,gfx_dst,&dst_rect,0x801080);
	}

	//libc_memcpy((UINT8 *)&gfx_src, gfx_dst, sizeof(ge_surface_desc_t));
	//gfx_src.surf_id = 2;//GMA_MEM_SURFACE
    
	ge_show_onoff(ge_dev, gfx_dst, 1);
		
	return &scrdev;
}