[PATCH v2,1/2] hyperv_fb: Add screen refresh after pause/resume operation
This is necessary because after VM is pause/resumed, some portion of the screen may need refresh. Signed-off-by: Haiyang Zhang Reviewed-by: K. Y. Srinivasan --- drivers/video/hyperv_fb.c | 10 +- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c index 130708f..bbcc8c0 100644 --- a/drivers/video/hyperv_fb.c +++ b/drivers/video/hyperv_fb.c @@ -218,6 +218,7 @@ struct hvfb_par { struct delayed_work dwork; bool update; + bool xrefresh; u32 pseudo_palette[16]; u8 init_buf[MAX_VMBUS_PKT_SIZE]; @@ -369,7 +370,7 @@ static void synthvid_recv_sub(struct hv_device *hdev) synthvid_send_situ(hdev); } - par->update = msg->feature_chg.is_dirt_needed; + par->xrefresh = par->update = msg->feature_chg.is_dirt_needed; if (par->update) schedule_delayed_work(>dwork, HVFB_UPDATE_DELAY); } @@ -522,6 +523,13 @@ 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, UMH_NO_WAIT); + } if (par->fb_ready) synthvid_update(info); -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v2,1/2] hyperv_fb: Add screen refresh after pause/resume operation
This is necessary because after VM is pause/resumed, some portion of the screen may need refresh. Signed-off-by: Haiyang Zhang haiya...@microsoft.com Reviewed-by: K. Y. Srinivasan k...@microsoft.com --- drivers/video/hyperv_fb.c | 10 +- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c index 130708f..bbcc8c0 100644 --- a/drivers/video/hyperv_fb.c +++ b/drivers/video/hyperv_fb.c @@ -218,6 +218,7 @@ struct hvfb_par { struct delayed_work dwork; bool update; + bool xrefresh; u32 pseudo_palette[16]; u8 init_buf[MAX_VMBUS_PKT_SIZE]; @@ -369,7 +370,7 @@ static void synthvid_recv_sub(struct hv_device *hdev) synthvid_send_situ(hdev); } - par-update = msg-feature_chg.is_dirt_needed; + par-xrefresh = par-update = msg-feature_chg.is_dirt_needed; if (par-update) schedule_delayed_work(par-dwork, HVFB_UPDATE_DELAY); } @@ -522,6 +523,13 @@ 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, UMH_NO_WAIT); + } if (par-fb_ready) synthvid_update(info); -- 1.7.4.1 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/