Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] pvfb: Add offset in resize event

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] pvfb: Add offset in resize event
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 27 Mar 2008 05:30:20 -0700
Delivery-date: Thu, 27 Mar 2008 05:30:32 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1206540336 0
# Node ID b6d15be09aecc41605db2851c59560aa0d7698b0
# Parent  30e20bb55da5ec1abfc43e7bb5284b6b450158cc
pvfb: Add offset in resize event
Also support depth change.

Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
---
 tools/ioemu/hw/xenfb.c       |    8 ++++++--
 xen/include/public/io/fbif.h |    1 +
 2 files changed, 7 insertions(+), 2 deletions(-)

diff -r 30e20bb55da5 -r b6d15be09aec tools/ioemu/hw/xenfb.c
--- a/tools/ioemu/hw/xenfb.c    Wed Mar 26 14:04:21 2008 +0000
+++ b/tools/ioemu/hw/xenfb.c    Wed Mar 26 14:05:36 2008 +0000
@@ -56,6 +56,7 @@ struct xenfb {
        int depth;              /* colour depth of guest framebuffer */
        int width;              /* pixel width of guest framebuffer */
        int height;             /* pixel height of guest framebuffer */
+       int offset;             /* offset of the framebuffer */
        int abs_pointer_wanted; /* Whether guest supports absolute pointer */
        int button_state;       /* Last seen pointer button state */
        char protocol[64];      /* frontend protocol */
@@ -519,11 +520,13 @@ static void xenfb_on_fb_event(struct xen
                case XENFB_TYPE_RESIZE:
                        xenfb->width  = event->resize.width;
                        xenfb->height = event->resize.height;
+                       xenfb->depth = event->resize.depth;
                        xenfb->row_stride = event->resize.stride;
+                       xenfb->offset = event->resize.offset;
                        dpy_colourdepth(xenfb->ds, xenfb->depth);
                        dpy_resize(xenfb->ds, xenfb->width, xenfb->height, 
xenfb->row_stride);
                        if (xenfb->ds->shared_buf)
-                               dpy_setdata(xenfb->ds, xenfb->pixels);
+                               dpy_setdata(xenfb->ds, xenfb->pixels + 
xenfb->offset);
                        xenfb_invalidate(xenfb);
                        break;
                }
@@ -1105,6 +1108,7 @@ static void xenfb_mouse_event(void *opaq
 #define BLT(SRC_T,DST_T,RSB,GSB,BSB,RDB,GDB,BDB)                        \
     for (line = y ; line < (y+h) ; line++) {                            \
         SRC_T *src = (SRC_T *)(xenfb->pixels                            \
+                               + xenfb->offset                          \
                                + (line * xenfb->row_stride)             \
                                + (x * xenfb->depth / 8));               \
         DST_T *dst = (DST_T *)(xenfb->ds->data                                 
\
@@ -1147,7 +1151,7 @@ static void xenfb_guest_copy(struct xenf
         if (xenfb->depth == xenfb->ds->depth) { /* Perfect match can use fast 
path */
             for (line = y ; line < (y+h) ; line++) {
                 memcpy(xenfb->ds->data + (line * xenfb->ds->linesize) + (x * 
xenfb->ds->depth / 8),
-                        xenfb->pixels + (line * xenfb->row_stride) + (x * 
xenfb->depth / 8),
+                        xenfb->pixels + xenfb->offset + (line * 
xenfb->row_stride) + (x * xenfb->depth / 8),
                         w * xenfb->depth / 8);
             }
         } else { /* Mismatch requires slow pixel munging */
diff -r 30e20bb55da5 -r b6d15be09aec xen/include/public/io/fbif.h
--- a/xen/include/public/io/fbif.h      Wed Mar 26 14:04:21 2008 +0000
+++ b/xen/include/public/io/fbif.h      Wed Mar 26 14:05:36 2008 +0000
@@ -63,6 +63,7 @@ struct xenfb_resize
     int32_t height;  /* height in pixels */
     int32_t stride;  /* stride in bytes */
     int32_t depth;   /* depth in bits */
+    int32_t offset;  /* offset of the framebuffer in bytes */
 };
 
 #define XENFB_OUT_EVENT_SIZE 40

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] pvfb: Add offset in resize event, Xen patchbot-unstable <=