From: Jean Guyader Date: Mon, 7 Dec 2009 18:33:26 +0000 (+0000) Subject: intel: fixes X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=bf1c6d2cc0345c2c352fc1ecfa4f11b6f97c965a;p=xenclient%2Fioemu-pq.git intel: fixes - memset the right amount of memory - Don't do anything in focus if there isn't any pipe enabled --- diff --git a/master/intel b/master/intel index 33c3cb8..c9744f6 100644 --- a/master/intel +++ b/master/intel @@ -201,10 +201,10 @@ index 90bd544..e4e27a9 100644 vga_update_display(s); diff --git a/intel.c b/intel.c new file mode 100644 -index 0000000..f3d6672 +index 0000000..ef279fe --- /dev/null +++ b/intel.c -@@ -0,0 +1,518 @@ +@@ -0,0 +1,525 @@ +#include +#include +#include @@ -268,6 +268,12 @@ index 0000000..f3d6672 + return intel_get_reg(REG_DR_DSPBSURF); +} + ++static inline char intel_gfx_enabled(void) ++{ ++ return (intel_get_reg(REG_DR_PIPEACONF) & (1 << 31)) || ++ (intel_get_reg(REG_DR_PIPEBCONF) && (1 << 31)); ++} ++ +static inline void intel_get_res(unsigned int *x, + unsigned int *y, + unsigned int *pitch) @@ -603,17 +609,18 @@ index 0000000..f3d6672 + +static void intel_focus(int focus) +{ -+ if (intel_have_focus == focus) ++ if (intel_have_focus == focus || ++ !intel_gfx_enabled()) + return; + + intel_have_focus = focus; + if (intel_have_focus) { + intel_get_res(&IntelX, &IntelY, &IntelPitch); ++ memset((uint8_t *)(intel_mem + intel_get_surface()), 0, ++ IntelPitch * IntelY); + + if (!guest_framebuffer) + intel_force_linear(0); -+ memset((uint8_t *)(intel_mem + intel_get_surface()), 0, -+ IntelX * IntelY * 4); + } + vga_hw_invalidate(); + vga_hw_update();