[PATCH v2,1/2] hyperv_fb: Add screen refresh after pause/resume operation

2014-02-20 Thread Haiyang Zhang
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

2014-02-20 Thread Haiyang Zhang
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/