示例#1
0
static void hvfb_cfb_imageblit(struct fb_info *p,
			       const struct fb_image *image)
{
	struct hvfb_par *par = p->par;

	cfb_imageblit(p, image);
	if (par->synchronous_fb)
		synthvid_update(p);
}
示例#2
0
static void hvfb_cfb_copyarea(struct fb_info *p,
			      const struct fb_copyarea *area)
{
	struct hvfb_par *par = p->par;

	cfb_copyarea(p, area);
	if (par->synchronous_fb)
		synthvid_update(p);
}
示例#3
0
static void hvfb_cfb_fillrect(struct fb_info *p,
			      const struct fb_fillrect *rect)
{
	struct hvfb_par *par = p->par;

	cfb_fillrect(p, rect);
	if (par->synchronous_fb)
		synthvid_update(p);
}
示例#4
0
/*
 * Delayed work callback:
 * It is called at HVFB_UPDATE_DELAY or longer time interval to process
 * screen updates. It is re-scheduled if further update is necessary.
 */
static void hvfb_update_work(struct work_struct *w)
{
	struct hvfb_par *par = container_of(w, struct hvfb_par, dwork.work);
	struct fb_info *info = par->info;

	if (par->fb_ready)
		synthvid_update(info);

	if (par->update)
		schedule_delayed_work(&par->dwork, HVFB_UPDATE_DELAY);
}
示例#5
0
static int hvfb_on_panic(struct notifier_block *nb,
			 unsigned long e, void *p)
{
	struct hvfb_par *par;
	struct fb_info *info;

	par = container_of(nb, struct hvfb_par, hvfb_panic_nb);
	par->synchronous_fb = true;
	info = par->info;
	synthvid_update(info);

	return NOTIFY_DONE;
}
示例#6
0
文件: hyperv_fb.c 项目: AKEMXP/LIS3.5
/*
 * Delayed work callback:
 * It is called at HVFB_UPDATE_DELAY or longer time interval to process
 * screen updates. It is re-scheduled if further update is necessary.
 */
static void hvfb_update_work(struct work_struct *w)
{
	struct hvfb_par *par = container_of(w, struct hvfb_par, dwork.work);
	struct fb_info *info = par->info;
	char *argv[] = {"/usr/bin/xrefresh", "-display", ":0.0", NULL};
	char *envp[] = {"HOME=/", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };

	if (par->xrefresh) {
		par->xrefresh = false;
		call_usermodehelper(argv[0], argv, envp, 0);
	}

	if (par->fb_ready)
		synthvid_update(info);

	if (par->update)
		schedule_delayed_work(&par->dwork, HVFB_UPDATE_DELAY);
}