)]}'
{
  "commit": "bd023f953e5e51237726af04300e4637fe203774",
  "tree": "5e7c71d3f68ed04d33ffc53a182c29cdbd8b5334",
  "parents": [
    "313b1d697d58f284f4490d135a652f8280c52e8a"
  ],
  "author": {
    "name": "Corentin Chary",
    "email": "corentincj@iksaif.net",
    "time": "Wed Jul 07 20:58:02 2010 +0200"
  },
  "committer": {
    "name": "Anthony Liguori",
    "email": "aliguori@us.ibm.com",
    "time": "Mon Jul 26 17:36:14 2010 -0500"
  },
  "message": "vnc: threaded VNC server\n\nImplement a threaded VNC server using the producer-consumer model.\nThe main thread will push encoding jobs (a list a rectangles to update)\nin a queue, and the VNC worker thread will consume that queue and send\nframebuffer updates to the output buffer.\n\nThe threaded VNC server can be enabled with ./configure --enable-vnc-thread.\n\nIf you don\u0027t want it, just use ./configure --disable-vnc-thread and a syncrhonous\nqueue of job will be used (which as exactly the same behavior as the old queue).\nIf you disable the VNC thread, all thread related code will not be built and there will\nbe no overhead.\n\nSigned-off-by: Corentin Chary \u003ccorentincj@iksaif.net\u003e\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bb9806c755ec94633915a926299f646bc8f6b57d",
      "old_mode": 33188,
      "old_path": "Makefile.objs",
      "new_id": "4a1eaa1b072dfcd836a8aaad40789995b80ec554",
      "new_mode": 33188,
      "new_path": "Makefile.objs"
    },
    {
      "type": "modify",
      "old_id": "59e9385b705f9372c44e1e3d44986765779d4c14",
      "old_mode": 33261,
      "old_path": "configure",
      "new_id": "f5f7248bdd7b6b798ba0a58cf8a327e36f49aa09",
      "new_mode": 33261,
      "new_path": "configure"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e9cf08b6943223c5537671961ad581c4a4252df",
      "new_mode": 33188,
      "new_path": "ui/vnc-jobs-async.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49b77afcc9489d7030b24723aa6483bf6e628e1b",
      "new_mode": 33188,
      "new_path": "ui/vnc-jobs-sync.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b8dab8169f681e575178bddbd42138185126f07b",
      "new_mode": 33188,
      "new_path": "ui/vnc-jobs.h"
    },
    {
      "type": "modify",
      "old_id": "d0a4b7513230572c3d19bc6ad261d4e5c6fd9f59",
      "old_mode": 33188,
      "old_path": "ui/vnc.c",
      "new_id": "7330b2c8894d1aedf6dcb1e6d33964658d128321",
      "new_mode": 33188,
      "new_path": "ui/vnc.c"
    },
    {
      "type": "modify",
      "old_id": "344a68644bd941cbd6e9ce9e3437be81abdb71b0",
      "old_mode": 33188,
      "old_path": "ui/vnc.h",
      "new_id": "9619b247fb8bdc73e90ed3dfcf2e12fe897127d8",
      "new_mode": 33188,
      "new_path": "ui/vnc.h"
    }
  ]
}
