I have a DBus service that creates a Variant type for a Pixbuf file that when saved on either side gives two different files, despite the data being the same. The image saved from the server side is correct, the one on the client side shows the top 1/3 correct, middle 1/3 shifted horizontally by 1/3 of the width and the colors are wonky, and the bottom 1/3 shifted by 2/3 the width and has different wonky colors.
The Variant on the server side is created thusly
var image_var = new Variant ("(iiibi^ay)",
width,
height,
stride,
has_alpha,
bits_per_sample,
data);
and unpacked by the client using
Variant data_var = null;
image.get ("(iiibi@ay)",
&width,
&height,
&stride,
&has_alpha,
&bits_per_sample,
&data_var);
On both sides I print things about the pixbuf, including a checksum. The server side gives
Width: 1024
Height: 768
Stride: 3072
Bits/Sample: 8
Has Alpha: false
Data Length: 786432
Data Checksum: e1facf66095e46d7ca3338b6438c1939
and the client
Width: 1024
Height: 768
Stride: 3072
Bits/Sample: 8
Has Alpha: false
Data Length: 786432
Data Checksum: e1facf66095e46d7ca3338b6438c1939
Everything is definitely the same, the call to save the image for both is
pixbuf.save (filename, "jpeg", "quality", "100", null);
This has been tested and wonkiness has been verified on three different computers. I will provide a complete example, likely tomorrow. I just wanted to put this out there first without it in case someone has come across this before.