[Spice-devel] [PATCH] Free coroutine stack when releasing coroutine

2013-09-13 Thread Daniel P. Berrange
From: Daniel P. Berrange berra...@redhat.com

The coroutine_init function mmap's a stack for the
ucontext coroutine, but nothing ever munmaps it.

Signed-off-by: Daniel P. Berrange berra...@redhat.com
---
 gtk/coroutine_ucontext.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gtk/coroutine_ucontext.c b/gtk/coroutine_ucontext.c
index 79e4afe..f65337e 100644
--- a/gtk/coroutine_ucontext.c
+++ b/gtk/coroutine_ucontext.c
@@ -48,6 +48,8 @@ static int _coroutine_release(struct continuation *cc)
return ret;
}
 
+   munmap(co-cc.stack, co-cc.stack_size);
+
co-caller = NULL;
 
return 0;
-- 
1.8.3.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [PATCH] Free coroutine stack when releasing coroutine

2013-09-13 Thread Marc-André Lureau
ack

- Original Message -
 From: Daniel P. Berrange berra...@redhat.com
 
 The coroutine_init function mmap's a stack for the
 ucontext coroutine, but nothing ever munmaps it.
 
 Signed-off-by: Daniel P. Berrange berra...@redhat.com
 ---
  gtk/coroutine_ucontext.c | 2 ++
  1 file changed, 2 insertions(+)
 
 diff --git a/gtk/coroutine_ucontext.c b/gtk/coroutine_ucontext.c
 index 79e4afe..f65337e 100644
 --- a/gtk/coroutine_ucontext.c
 +++ b/gtk/coroutine_ucontext.c
 @@ -48,6 +48,8 @@ static int _coroutine_release(struct continuation *cc)
   return ret;
   }
  
 + munmap(co-cc.stack, co-cc.stack_size);
 +
   co-caller = NULL;
  
   return 0;
 --
 1.8.3.1
 
 ___
 Spice-devel mailing list
 Spice-devel@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/spice-devel
 
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] [PATCH] Abort if mmap of coroutine stack fails

2013-09-13 Thread Daniel P. Berrange
From: Daniel P. Berrange berra...@redhat.com

If we fail to mmap the stack, abort the processs rather
than returning an error. This is standard practice in
glib apps, and the caller was not checking the
coroutine_init() return code leading to memory corruption.

Signed-off-by: Daniel P. Berrange berra...@redhat.com
---
 gtk/coroutine_ucontext.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gtk/coroutine_ucontext.c b/gtk/coroutine_ucontext.c
index af811a7..79e4afe 100644
--- a/gtk/coroutine_ucontext.c
+++ b/gtk/coroutine_ucontext.c
@@ -20,6 +20,7 @@
 
 #include config.h
 
+#include glib.h
 #ifdef HAVE_SYS_TYPES_H
 #include sys/types.h
 #endif
@@ -69,7 +70,8 @@ int coroutine_init(struct coroutine *co)
MAP_PRIVATE | MAP_ANONYMOUS,
-1, 0);
if (co-cc.stack == MAP_FAILED)
-   return -1;
+   g_error(Failed to allocate %u bytes for coroutine stack,
+   (unsigned)co-stack_size);
co-cc.entry = coroutine_trampoline;
co-cc.release = _coroutine_release;
co-exited = 0;
-- 
1.8.3.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [PATCH] Abort if mmap of coroutine stack fails

2013-09-13 Thread Marc-André Lureau
ack

- Original Message -
 From: Daniel P. Berrange berra...@redhat.com
 
 If we fail to mmap the stack, abort the processs rather
 than returning an error. This is standard practice in
 glib apps, and the caller was not checking the
 coroutine_init() return code leading to memory corruption.
 
 Signed-off-by: Daniel P. Berrange berra...@redhat.com
 ---
  gtk/coroutine_ucontext.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/gtk/coroutine_ucontext.c b/gtk/coroutine_ucontext.c
 index af811a7..79e4afe 100644
 --- a/gtk/coroutine_ucontext.c
 +++ b/gtk/coroutine_ucontext.c
 @@ -20,6 +20,7 @@
  
  #include config.h
  
 +#include glib.h
  #ifdef HAVE_SYS_TYPES_H
  #include sys/types.h
  #endif
 @@ -69,7 +70,8 @@ int coroutine_init(struct coroutine *co)
   MAP_PRIVATE | MAP_ANONYMOUS,
   -1, 0);
   if (co-cc.stack == MAP_FAILED)
 - return -1;
 + g_error(Failed to allocate %u bytes for coroutine stack,
 + (unsigned)co-stack_size);
   co-cc.entry = coroutine_trampoline;
   co-cc.release = _coroutine_release;
   co-exited = 0;
 --
 1.8.3.1
 
 ___
 Spice-devel mailing list
 Spice-devel@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/spice-devel
 
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] wireshark codegen

2013-09-13 Thread Jonathon Jongsma
Opinions on this?  The end goal is to be able to generate a header that has 
both the enums and descriptions of those enum values (e.g. a mapping from enum 
to string name) that we can use for the wireshark dissector.  Obviously, when a 
new channel or new message gets added to the protocol, there is still some 
manual work that needs to be done to update the wireshark dissector, but being 
able to autogenerate theses values reduces the maintenance burden for this part 
at least.  


From c6cef8747b61e203ebb8ade580dae063d581afb2 Mon Sep 17 00:00:00 2001
From: Jonathon Jongsma jjong...@redhat.com
Date: Thu, 12 Sep 2013 12:11:02 -0500
Subject: [PATCH] codegen: Add a --generate-wireshark-dissector option

The wireshark protocol dissector is a bit out-of-date. Several new channel types
and enums have been added.  It would be nice if these values (and the
translation between the value and the name) could be automatically generated so
that updating the dissector was a slightly less manual process.  This patch adds
a commandline switch which generates both the enums and value-name lists in the
format that wireshark expects.
---
 python_modules/codegen.py |   2 +-
 python_modules/ptypes.py  |  17 
 spice_codegen.py  | 105 ++
 3 files changed, 87 insertions(+), 37 deletions(-)

diff --git a/python_modules/codegen.py b/python_modules/codegen.py
index 009cf95..5dee0b8 100644
--- a/python_modules/codegen.py
+++ b/python_modules/codegen.py
@@ -41,7 +41,7 @@ def set_prefix(prefix):
 def prefix_underscore_upper(*args):
 s = proto_prefix_upper
 for arg in args:
-s = s + _ + arg
+s = s + _ + arg.upper()
 return s
 
 def prefix_underscore_lower(*args):
diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py
index d9fbfe2..2bfbf0d 100644
--- a/python_modules/ptypes.py
+++ b/python_modules/ptypes.py
@@ -247,6 +247,23 @@ class EnumBaseType(Type):
 def get_fixed_nw_size(self):
 return self.bits / 8
 
+# generates a value-name table suitable for use with the wireshark protocol
+# dissector
+def c_describe(self, writer):
+writer.write(static const value_string %s_vs[] =  % 
codegen.prefix_underscore_lower(self.name))
+writer.begin_block()
+values = self.names.keys()
+values.sort()
+for i in values:
+writer.write({ )
+writer.write(self.c_enumname(i))
+writer.write(, \%s\ }, % self.names[i])
+writer.newline()
+writer.write({ 0, NULL })
+writer.end_block(semicolon=True)
+writer.newline()
+
+
 class EnumType(EnumBaseType):
 def __init__(self, bits, name, enums, attribute_list):
 Type.__init__(self)
diff --git a/spice_codegen.py b/spice_codegen.py
index e9e64c0..de1f87b 100755
--- a/spice_codegen.py
+++ b/spice_codegen.py
@@ -10,38 +10,73 @@ from python_modules import codegen
 from python_modules import demarshal
 from python_modules import marshal
 
-def write_channel_enums(writer, channel, client):
+def write_channel_enums(writer, channel, client, describe):
 messages = filter(lambda m : m.channel == channel, \
   channel.client_messages if client else 
channel.server_messages)
 if len(messages) == 0:
 return
-writer.begin_block(enum)
-i = 0
 if client:
-prefix = [ MSGC ]
+prefix = [ msgc ]
 else:
-prefix = [ MSG ]
+prefix = [ msg ]
 if channel.member_name:
-prefix.append(channel.member_name.upper())
+prefix.append(channel.member_name)
+if not describe:
+writer.begin_block(enum)
+else:
+writer.begin_block(static const value_string %s_vs[] =  % 
(codegen.prefix_underscore_lower(*prefix)))
+i = 0
 prefix.append(None) # To be replaced with name
 for m in messages:
-prefix[-1] = m.name.upper()
+prefix[-1] = m.name
 enum = codegen.prefix_underscore_upper(*prefix)
-if m.value == i:
-writer.writeln(%s, % enum)
-i = i + 1
+if describe:
+writer.writeln({ %s, \%s %s\ }, % (enum, Client if client 
else Server, m.name.upper()))
 else:
-writer.writeln(%s = %s, % (enum, m.value))
-i = m.value + 1
-if channel.member_name:
-prefix[-1] = prefix[-2]
-prefix[-2] = END
-writer.newline()
-writer.writeln(%s % (codegen.prefix_underscore_upper(*prefix)))
+if m.value == i:
+writer.writeln(%s, % enum)
+i = i + 1
+else:
+writer.writeln(%s = %s, % (enum, m.value))
+i = m.value + 1
+if describe:
+writer.writeln({ 0, NULL });
+else:
+if channel.member_name:
+prefix[-1] = prefix[-2]
+prefix[-2] = END
+writer.newline()
+writer.writeln(%s % (codegen.prefix_underscore_upper(*prefix)))
 

[Spice-devel] [spice-html5] Give the Garbage collector a clue to recycle images; avoids fairly massive memory leaks during video playback.

2013-09-13 Thread Jeremy White
Signed-off-by: Jeremy White jwh...@codeweavers.com
---
 display.js |4 
 1 file changed, 4 insertions(+)

diff --git a/display.js b/display.js
index f9bfe76..d0d0994 100644
--- a/display.js
+++ b/display.js
@@ -778,6 +778,10 @@ function handle_draw_jpeg_onload()
 {
 context.drawImage(this, this.o.base.box.left, this.o.base.box.top);
 
+// Give the Garbage collector a clue to recycle this; avoids
+//  fairly massive memory leaks during video playback
+this.src = null;
+
 if (this.o.descriptor  
 (this.o.descriptor.flags  SPICE_IMAGE_FLAGS_CACHE_ME))
 {
-- 
1.7.10.4


___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] oVirt support in aSPICE stalled due to broken network file I/O

2013-09-13 Thread i iordanov
Hi Christophe,

I read through some govirt code, and I think you're right that gvfs is only
used during the fetching of the certificate. If that's the case, I will
start by not fetching the CA automatically, but requiring for users to
provide it to aSPICE the same way as they have to provide it for a simple
SPICE connection (within the Import CA dialog in aSPICE, which is
analogous to the --spice-ca-file option in virt-viewer). I think this will
work for most if not all people.

Thanks again!
iordan



On Thu, Sep 12, 2013 at 1:20 PM, Christophe Fergeau cferg...@redhat.comwrote:

 Hey Iordan,

 On Thu, Sep 12, 2013 at 01:11:45PM -0400, i iordanov wrote:
  Hi Christophe,
 
  It is currently very hard, bordering on impossible to build gvfs for
  Android, because it ends up depending on GTK. The sequence of
  dependencies is:
 
  glib network I/O - gvfs - libsoup-gnome - gnome-keyring - gcr-3 -
  gcr-ui-3 - GTK
 
  The glib guys are arguing that this is not a bug, since it's just a
  dependency that's missing, but I am trying to convince them that the
  low-level glib should not end up depending on a UI library...
 
  Hence for the moment, I absolutely cannot use glib network I/O. Can
  you tell me, since you've written libgovirt, do you think it's
  possible to add functionality to *it* rather than writing workarounds
  for client software? I could work around this issue in aSPICE, but
  that would not help for any other client on any other platform that
  doesn't have GTK.
 
  Regardless of whether you do agree it's best if govirt either stopped
  relying on glib network file I/O or had an option to use a different
  method, what library would you say would be best suited to replace all
  the network file I/O operations that you have in govirt with a
  download - local file I/O sequence? Libcurl comes to mind, but
  perhaps libsoup is better suited for the purpose in your opinion?

 Could you try what I suggested in

 http://lists.freedesktop.org/archives/spice-devel/2013-September/014430.html
 ? I think gvfs is only used if you use the helpers to fetch the
 certificate, and the rest of the code is just doing calls into
 librest/libsoup which I think are not using gio/gvfs.
 If this is a correct, then I think it's not a big issue that you don't have
 gvfs on your platform. If it is, I'll have to look where/how it's used to
 figure out how to workaround this.

 Hope that helps,

 Christophe




-- 
The conscious mind has only one thread of execution.
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] More on virt-viewer for windows

2013-09-13 Thread Fernando Lozano

Hi there,

As the newer windows binaries kindly provided by teuf won't work because 
of missing DLLs, I returned to the latest binaries provided by 
spice-space.org.


remove-viewer.exe works fine, after I foud where to put TLS 
certificates. Not that user-friendly though. :-)
virt-viewer and virsh won't connect, although they are using the same 
certificates as a Linux client.


The short-term goal is getting virt-manager to work, butI think it'd be 
easier to get virsh working first, but the solution would apply to 
virt-manager as well.


Microsoft SystemInternals ProccessMonitor shows the certificates are 
being found and read (that's how I found where to put then). I assume 
that's ok. But after that nothing I can use for troubleshooting. Looks 
like a bug on the windows port networking code.


But I finally found how to use libvirt own debugging features. So here's 
attached a log for the windows machine, which can't connect, and the 
linux machine, which connects fine to the same kvm host, using the same 
certificates and the same URL (to the same CentOS 6.3 kvm host). They 
are using different virsh and libvirt releases, so I added to the logs 
the output of virsh -V. Both machines are on the same level-2 network, 
vlan and IP subnet.


I hope this helps someone find the bug and provide me with new binaries 
to test. :-)


If someone helps me getting the missing DLLs for teuf newer binaries, I 
can generate a log using them. It looks the missing DLLs is another bug 
per se.


Of course, I hope someonte at Red Hat realizes a missing or broken 
windows ports hurts KVM and RHEL and RHEV market share and put more 
people on it. :-)


PS: Someone offered helping me compiling the windows port. I'll give it 
a try, no promises, free time is very scarse. :-(



[]s, Fernando Lozano

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] oVirt support in aSPICE stalled due to broken network file I/O

2013-09-13 Thread i iordanov
Hi Christophe,

I hope this is not too much to ask, but would it be possible for OvirtProxy
to have a ca-cert-file property as well as a ca-cert property? This way,
supporting the spice-ca-file option as well as the existing aSPICE
functionality will be much easier.

Thanks!
iordan


On Fri, Sep 13, 2013 at 12:09 PM, i iordanov iiorda...@gmail.com wrote:

 Hi Christophe,

 I read through some govirt code, and I think you're right that gvfs is
 only used during the fetching of the certificate. If that's the case, I
 will start by not fetching the CA automatically, but requiring for users to
 provide it to aSPICE the same way as they have to provide it for a simple
 SPICE connection (within the Import CA dialog in aSPICE, which is
 analogous to the --spice-ca-file option in virt-viewer). I think this will
 work for most if not all people.

 Thanks again!
 iordan



 On Thu, Sep 12, 2013 at 1:20 PM, Christophe Fergeau 
 cferg...@redhat.comwrote:

 Hey Iordan,

 On Thu, Sep 12, 2013 at 01:11:45PM -0400, i iordanov wrote:
  Hi Christophe,
 
  It is currently very hard, bordering on impossible to build gvfs for
  Android, because it ends up depending on GTK. The sequence of
  dependencies is:
 
  glib network I/O - gvfs - libsoup-gnome - gnome-keyring - gcr-3 -
  gcr-ui-3 - GTK
 
  The glib guys are arguing that this is not a bug, since it's just a
  dependency that's missing, but I am trying to convince them that the
  low-level glib should not end up depending on a UI library...
 
  Hence for the moment, I absolutely cannot use glib network I/O. Can
  you tell me, since you've written libgovirt, do you think it's
  possible to add functionality to *it* rather than writing workarounds
  for client software? I could work around this issue in aSPICE, but
  that would not help for any other client on any other platform that
  doesn't have GTK.
 
  Regardless of whether you do agree it's best if govirt either stopped
  relying on glib network file I/O or had an option to use a different
  method, what library would you say would be best suited to replace all
  the network file I/O operations that you have in govirt with a
  download - local file I/O sequence? Libcurl comes to mind, but
  perhaps libsoup is better suited for the purpose in your opinion?

 Could you try what I suggested in

 http://lists.freedesktop.org/archives/spice-devel/2013-September/014430.html
 ? I think gvfs is only used if you use the helpers to fetch the
 certificate, and the rest of the code is just doing calls into
 librest/libsoup which I think are not using gio/gvfs.
 If this is a correct, then I think it's not a big issue that you don't
 have
 gvfs on your platform. If it is, I'll have to look where/how it's used to
 figure out how to workaround this.

 Hope that helps,

 Christophe




 --
 The conscious mind has only one thread of execution.




-- 
The conscious mind has only one thread of execution.
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] vdagent protocol question

2013-09-13 Thread Dietmar Maurer
The clipboard message currently include an optional 4bytes enty for 'selection':

typedef struct SPICE_ATTR_PACKED VDAgentClipboardGrab {
#if 0 /* VD_AGENT_CAP_CLIPBOARD_SELECTION */
uint8_t selection;
uint8_t __reserved[sizeof(uint32_t) - 1 * sizeof(uint8_t)];
#endif
uint32_t types[0];
} VDAgentClipboardGrab;

This makes it really hard to write nice code.

I wonder why it does not simply use the 'opaque' field of VDAgentMessage 
instead?
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] vdagent protocol question

2013-09-13 Thread Dietmar Maurer
  This makes it really hard to write nice code.
 
 I don't think I would have done it if it was really hard. But I understand 
 in your
 code it might be difficult for some reason.

It is not 'really' hard (but a bit 'ugly')

  I wonder why it does not simply use the ‘opaque’ field of
  VDAgentMessage instead?
 
 
 I have No idea what this opaque is for, but I prefer the information to be 
 explicit.

I just read this:  http://spice-space.org/page/Whiteboard/AgentProtocol

According to that, this field is exactly for that use case.

 What if you consider it as a different message with a different structure
 somehow?

Why don't you simply always include those bytes instead?

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] vdagent protocol question

2013-09-13 Thread Marc-André Lureau

Hi

- Original Message -
 
 
 The clipboard message currently include an optional 4bytes enty for
 ‘selection’:
 
 
 
 typedef struct SPICE_ATTR_PACKED VDAgentClipboardGrab {
 
 #if 0 /* VD_AGENT_CAP_CLIPBOARD_SELECTION */
 
 uint8_t selection;
 
 uint8_t __reserved[sizeof(uint32_t) - 1 * sizeof(uint8_t)];
 
 #endif
 
 uint32_t types[0];
 
 } VDAgentClipboardGrab;
 
 
 
 This makes it really hard to write nice code.

I don't think I would have done it if it was really hard. But I understand in 
your code it might be difficult for some reason.

 
 
 I wonder why it does not simply use the ‘opaque’ field of VDAgentMessage
 instead?
 

I have No idea what this opaque is for, but I prefer the information to be 
explicit.

What if you consider it as a different message with a different structure 
somehow?
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] [xf86-video-qxl] Provide compatibility for Xorg list code with Xorg 1.12, for RHEL 6 support (resend)

2013-09-13 Thread Jeremy White
Signed-off-by: Jeremy White jwh...@codeweavers.com
---
 src/qxl.h |   12 +++-
 src/qxl_kms.c |2 +-
 src/qxl_mem.c |2 +-
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/qxl.h b/src/qxl.h
index c026b63..a3bc7db 100644
--- a/src/qxl.h
+++ b/src/qxl.h
@@ -56,6 +56,16 @@
 
 #include qxl_drmmode.h
 
+#if (XORG_VERSION_CURRENT  XORG_VERSION_NUMERIC(1, 11, 99, 903, 0))
+typedef struct list xorg_list_t;
+#define xorg_list_init  list_init
+#define xorg_list_add   list_add
+#define xorg_list_del   list_del
+#define xorg_list_for_each_entrylist_for_each_entry
+#else
+typedef struct xorg_list xorg_list_t;
+#endif
+
 #include compat-api.h
 #define hidden _X_HIDDEN
 
@@ -332,7 +342,7 @@ struct _qxl_screen_t
 #endif /* XSPICE */
 
 uint32_t deferred_fps;
-struct xorg_list ums_bos;
+xorg_list_t ums_bos;
 struct qxl_bo_funcs *bo_funcs;
 
 Bool kms_enabled;
diff --git a/src/qxl_kms.c b/src/qxl_kms.c
index 32859cc..6c5b427 100644
--- a/src/qxl_kms.c
+++ b/src/qxl_kms.c
@@ -338,7 +338,7 @@ struct qxl_kms_bo {
 const char *name;
 uint32_t size;
 int type;
-struct xorg_list bos;
+xorg_list_t bos;
 void *mapping;
 qxl_screen_t *qxl;
 int refcnt;
diff --git a/src/qxl_mem.c b/src/qxl_mem.c
index 44be8c4..fde0976 100644
--- a/src/qxl_mem.c
+++ b/src/qxl_mem.c
@@ -448,7 +448,7 @@ struct qxl_ums_bo {
 void *internal_virt_addr;
 int refcnt;
 qxl_screen_t *qxl;
-struct xorg_list bos;
+xorg_list_t bos;
 };
 
 static struct qxl_bo *qxl_bo_alloc_internal(qxl_screen_t *qxl, int type, int 
flags, unsigned long size, const char *name)
-- 
1.7.10.4


___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] [spice-html5] Send the client cache size correctly in little endian order so we don't claim to have an infinitely large cache.

2013-09-13 Thread Jeremy White
Signed-off-by: Jeremy White jwh...@codeweavers.com
---
 spicedataview.js |   12 
 spicemsg.js  |3 +--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/spicedataview.js b/spicedataview.js
index ef9555d..43f0170 100644
--- a/spicedataview.js
+++ b/spicedataview.js
@@ -93,4 +93,16 @@ SpiceDataView.prototype = {
 this.setUint16(byteOffset + high, (w  0x)  16, 
littleEndian);
 this.setUint16(byteOffset + low,  (w  0x), littleEndian);
 },
+setUint64:  function(byteOffset, w, littleEndian)
+{
+var low = 4, high = 0;
+if (littleEndian)
+{
+low = 0;
+high = 4;
+}
+
+this.setUint32(byteOffset + high, (w  0x)  32, 
littleEndian);
+this.setUint32(byteOffset + low,  (w  0x), 
littleEndian);
+},
 }
diff --git a/spicemsg.js b/spicemsg.js
index 365fdf7..e342d6a 100644
--- a/spicemsg.js
+++ b/spicemsg.js
@@ -445,8 +445,7 @@ SpiceMsgcDisplayInit.prototype =
 at = at || 0;
 var dv = new SpiceDataView(a);
 dv.setUint8(at, this.pixmap_cache_id, true); at++;
-dv.setUint32(at, 0, true); at += 4;
-dv.setUint32(at, this.pixmap_cache_size, true); at += 4;
+dv.setUint64(at, this.pixmap_cache_size, true); at += 8;
 dv.setUint8(at, this.glz_dictionary_id, true); at++;
 dv.setUint32(at, this.glz_dictionary_window_size, true); at += 4;
 },
-- 
1.7.10.4


___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] oVirt support in aSPICE stalled due to broken network file I/O

2013-09-13 Thread i iordanov
Hi Christophe,

If adding a ca-file property to OvirtProxy is not acceptable, would you
consider adding (something like) the following function to ovirt-proxy.c?

Please note that this is a preliminary variant that I haven't tested much,
and may not have enough error checking!

void ovirt_proxy_load_ca_cert_file (OvirtProxy *proxy,
   const gchar *ca_file_name,
   GError **error)
{
GMappedFile *ca_file = NULL;
GBytes *bytes = NULL;
gconstpointer ca_data;
gsize cert_length = 0;

ca_file = g_mapped_file_new(ca_file_name, FALSE, error);
if (ca_file == NULL) {
goto error;
}

bytes = g_mapped_file_get_bytes(ca_file);
cert_length = g_bytes_get_size(bytes);
ca_data = g_bytes_get_data (bytes, cert_length);
set_downloaded_ca_cert(proxy, (char*)ca_data, cert_length);

error:
if (ca_file != NULL)
g_object_unref(ca_file);

if (bytes != NULL)
g_object_unref(bytes);
}

Cheers,
iordan


On Fri, Sep 13, 2013 at 12:53 PM, i iordanov iiorda...@gmail.com wrote:

 Hi Christophe,

 I hope this is not too much to ask, but would it be possible for
 OvirtProxy to have a ca-cert-file property as well as a ca-cert property?
 This way, supporting the spice-ca-file option as well as the existing
 aSPICE functionality will be much easier.

 Thanks!
 iordan


 On Fri, Sep 13, 2013 at 12:09 PM, i iordanov iiorda...@gmail.com wrote:

 Hi Christophe,

 I read through some govirt code, and I think you're right that gvfs is
 only used during the fetching of the certificate. If that's the case, I
 will start by not fetching the CA automatically, but requiring for users to
 provide it to aSPICE the same way as they have to provide it for a simple
 SPICE connection (within the Import CA dialog in aSPICE, which is
 analogous to the --spice-ca-file option in virt-viewer). I think this will
 work for most if not all people.

 Thanks again!
 iordan



 On Thu, Sep 12, 2013 at 1:20 PM, Christophe Fergeau 
 cferg...@redhat.comwrote:

 Hey Iordan,

 On Thu, Sep 12, 2013 at 01:11:45PM -0400, i iordanov wrote:
  Hi Christophe,
 
  It is currently very hard, bordering on impossible to build gvfs for
  Android, because it ends up depending on GTK. The sequence of
  dependencies is:
 
  glib network I/O - gvfs - libsoup-gnome - gnome-keyring - gcr-3 -
  gcr-ui-3 - GTK
 
  The glib guys are arguing that this is not a bug, since it's just a
  dependency that's missing, but I am trying to convince them that the
  low-level glib should not end up depending on a UI library...
 
  Hence for the moment, I absolutely cannot use glib network I/O. Can
  you tell me, since you've written libgovirt, do you think it's
  possible to add functionality to *it* rather than writing workarounds
  for client software? I could work around this issue in aSPICE, but
  that would not help for any other client on any other platform that
  doesn't have GTK.
 
  Regardless of whether you do agree it's best if govirt either stopped
  relying on glib network file I/O or had an option to use a different
  method, what library would you say would be best suited to replace all
  the network file I/O operations that you have in govirt with a
  download - local file I/O sequence? Libcurl comes to mind, but
  perhaps libsoup is better suited for the purpose in your opinion?

 Could you try what I suggested in

 http://lists.freedesktop.org/archives/spice-devel/2013-September/014430.html
 ? I think gvfs is only used if you use the helpers to fetch the
 certificate, and the rest of the code is just doing calls into
 librest/libsoup which I think are not using gio/gvfs.
 If this is a correct, then I think it's not a big issue that you don't
 have
 gvfs on your platform. If it is, I'll have to look where/how it's used to
 figure out how to workaround this.

 Hope that helps,

 Christophe




 --
 The conscious mind has only one thread of execution.




 --
 The conscious mind has only one thread of execution.




-- 
The conscious mind has only one thread of execution.
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel