diff options
| author | Khem Raj <raj.khem@gmail.com> | 2011-12-09 19:30:45 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-12-12 21:50:20 +0000 |
| commit | 023368f4006e7fe94a2b0490ed1467b367b9ae28 (patch) | |
| tree | b8348b7f40f2714cf5ea34f29b18ee5376408a41 /meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch | |
| parent | bd75266ab3c509a3a1eb62ee70074e3b28c9312f (diff) | |
| download | poky-023368f4006e7fe94a2b0490ed1467b367b9ae28.tar.gz | |
qemu-0.15.1: Bump recipes from 0.15.0 to 0.15.1
No other changes (except checksum updates) then git mv were needed
(From OE-Core rev: 48b56cf4912d2ec324d18391865940b675a72c1e)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch')
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch new file mode 100644 index 0000000000..c4c5424e16 --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch | |||
| @@ -0,0 +1,118 @@ | |||
| 1 | # fix VMware VGA driver depth calculation error, which may cause segmentation fault | ||
| 2 | # | ||
| 3 | # ktian1, 06/29/2010 | ||
| 4 | |||
| 5 | Upstream-Status: Pending | ||
| 6 | |||
| 7 | Index: qemu-0.14.0/console.h | ||
| 8 | =================================================================== | ||
| 9 | --- qemu-0.14.0.orig/console.h | ||
| 10 | +++ qemu-0.14.0/console.h | ||
| 11 | @@ -171,6 +171,12 @@ struct DisplayAllocator { | ||
| 12 | void (*free_displaysurface)(DisplaySurface *surface); | ||
| 13 | }; | ||
| 14 | |||
| 15 | +struct DisplayPostCallback { | ||
| 16 | + void (*postcall) (void *); | ||
| 17 | + void *parm; | ||
| 18 | + struct DisplayPostCallback *next; | ||
| 19 | +}; | ||
| 20 | + | ||
| 21 | struct DisplayState { | ||
| 22 | struct DisplaySurface *surface; | ||
| 23 | void *opaque; | ||
| 24 | @@ -178,6 +184,7 @@ struct DisplayState { | ||
| 25 | |||
| 26 | struct DisplayAllocator* allocator; | ||
| 27 | struct DisplayChangeListener* listeners; | ||
| 28 | + struct DisplayPostCallback* postcalls; | ||
| 29 | |||
| 30 | void (*mouse_set)(int x, int y, int on); | ||
| 31 | void (*cursor_define)(QEMUCursor *cursor); | ||
| 32 | @@ -229,6 +236,12 @@ static inline void register_displaychang | ||
| 33 | ds->listeners = dcl; | ||
| 34 | } | ||
| 35 | |||
| 36 | +static inline void register_displaypostcallback(DisplayState *ds, DisplayPostCallback *dpc) | ||
| 37 | +{ | ||
| 38 | + dpc->next = ds->postcalls; | ||
| 39 | + ds->postcalls = dpc; | ||
| 40 | +} | ||
| 41 | + | ||
| 42 | static inline void dpy_update(DisplayState *s, int x, int y, int w, int h) | ||
| 43 | { | ||
| 44 | struct DisplayChangeListener *dcl = s->listeners; | ||
| 45 | Index: qemu-0.14.0/hw/vmware_vga.c | ||
| 46 | =================================================================== | ||
| 47 | --- qemu-0.14.0.orig/hw/vmware_vga.c | ||
| 48 | +++ qemu-0.14.0/hw/vmware_vga.c | ||
| 49 | @@ -1001,8 +1001,9 @@ static void vmsvga_update_display(void * | ||
| 50 | } | ||
| 51 | } | ||
| 52 | |||
| 53 | -static void vmsvga_reset(struct vmsvga_state_s *s) | ||
| 54 | +static void vmsvga_reset(void *parm) | ||
| 55 | { | ||
| 56 | + struct vmsvga_state_s *s = (struct vmsvga_state_s *)parm; | ||
| 57 | s->index = 0; | ||
| 58 | s->enable = 0; | ||
| 59 | s->config = 0; | ||
| 60 | @@ -1207,6 +1208,8 @@ static const VMStateDescription vmstate_ | ||
| 61 | |||
| 62 | static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size) | ||
| 63 | { | ||
| 64 | + DisplayPostCallback *dpc; | ||
| 65 | + | ||
| 66 | s->scratch_size = SVGA_SCRATCH_SIZE; | ||
| 67 | s->scratch = qemu_malloc(s->scratch_size * 4); | ||
| 68 | |||
| 69 | @@ -1224,7 +1227,10 @@ static void vmsvga_init(struct vmsvga_st | ||
| 70 | vga_init(&s->vga); | ||
| 71 | vmstate_register(NULL, 0, &vmstate_vga_common, &s->vga); | ||
| 72 | |||
| 73 | - vmsvga_reset(s); | ||
| 74 | + dpc = qemu_mallocz(sizeof(DisplayPostCallback)); | ||
| 75 | + dpc->postcall = vmsvga_reset; | ||
| 76 | + dpc->parm = s; | ||
| 77 | + register_displaypostcallback(s->vga.ds, dpc); | ||
| 78 | } | ||
| 79 | |||
| 80 | static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num, | ||
| 81 | Index: qemu-0.14.0/qemu-common.h | ||
| 82 | =================================================================== | ||
| 83 | --- qemu-0.14.0.orig/qemu-common.h | ||
| 84 | +++ qemu-0.14.0/qemu-common.h | ||
| 85 | @@ -241,6 +241,7 @@ typedef struct DisplayState DisplayState | ||
| 86 | typedef struct DisplayChangeListener DisplayChangeListener; | ||
| 87 | typedef struct DisplaySurface DisplaySurface; | ||
| 88 | typedef struct DisplayAllocator DisplayAllocator; | ||
| 89 | +typedef struct DisplayPostCallback DisplayPostCallback; | ||
| 90 | typedef struct PixelFormat PixelFormat; | ||
| 91 | typedef struct TextConsole TextConsole; | ||
| 92 | typedef TextConsole QEMUConsole; | ||
| 93 | Index: qemu-0.14.0/vl.c | ||
| 94 | =================================================================== | ||
| 95 | --- qemu-0.14.0.orig/vl.c | ||
| 96 | +++ qemu-0.14.0/vl.c | ||
| 97 | @@ -1920,6 +1920,7 @@ int main(int argc, char **argv, char **e | ||
| 98 | char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */ | ||
| 99 | DisplayState *ds; | ||
| 100 | DisplayChangeListener *dcl; | ||
| 101 | + DisplayPostCallback *dpc; | ||
| 102 | int cyls, heads, secs, translation; | ||
| 103 | QemuOpts *hda_opts = NULL, *opts; | ||
| 104 | QemuOptsList *olist; | ||
| 105 | @@ -3101,6 +3102,13 @@ int main(int argc, char **argv, char **e | ||
| 106 | |||
| 107 | /* display setup */ | ||
| 108 | dpy_resize(ds); | ||
| 109 | + dpc = ds->postcalls; | ||
| 110 | + while (dpc != NULL) { | ||
| 111 | + if (dpc->postcall != NULL) | ||
| 112 | + dpc->postcall(dpc->parm); | ||
| 113 | + dpc = dpc->next; | ||
| 114 | + } | ||
| 115 | + | ||
| 116 | dcl = ds->listeners; | ||
| 117 | while (dcl != NULL) { | ||
| 118 | if (dcl->dpy_refresh != NULL) { | ||
