summaryrefslogtreecommitdiff
path: root/src/common_vgaarb.c
diff options
context:
space:
mode:
authorTiago Vignatti <tiago.vignatti@nokia.com>2010-05-22 18:23:33 +0300
committerTiago Vignatti <tiago.vignatti@nokia.com>2010-06-16 18:57:28 +0300
commite0ae5251cd030b201c14f5888a539aa40f17abfb (patch)
tree85bb4f889bdb1c041d29c802366c386c7b2e512c /src/common_vgaarb.c
parent0f153de858032c95ea5844aa6e0f1c8dad7531da (diff)
downloadlibpciaccess-e0ae5251cd030b201c14f5888a539aa40f17abfb.tar.gz
libpciaccess-e0ae5251cd030b201c14f5888a539aa40f17abfb.tar.bz2
libpciaccess-e0ae5251cd030b201c14f5888a539aa40f17abfb.zip
vgaarb: read back vga count when setting new decoding
Decode kernel operation can also change vga refcount, so we need to read back the information when calling it. Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Diffstat (limited to 'src/common_vgaarb.c')
-rw-r--r--src/common_vgaarb.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/common_vgaarb.c b/src/common_vgaarb.c
index f09d513..c94b362 100644
--- a/src/common_vgaarb.c
+++ b/src/common_vgaarb.c
@@ -263,6 +263,13 @@ pci_device_vgaarb_decodes(int new_vgaarb_rsrc)
ret = vgaarb_write(pci_sys->vgaarb_fd, buf, len);
if (ret == 0)
dev->vgaarb_rsrc = new_vgaarb_rsrc;
+
+ ret = read(pci_sys->vgaarb_fd, buf, BUFSIZE);
+ if (ret <= 0)
+ return -1;
+
+ parse_string_to_decodes_rsrc(buf, &pci_sys->vga_count, NULL);
+
return ret;
}