)]}'
{
  "commit": "175b2a6e4be06422da59d3a82c28d9a0e738e282",
  "tree": "109f343f1e5207c3c6a2fc4c339465f4a1e81dc6",
  "parents": [
    "418ba9e5d6849ef2e8512d8853628ce4bf37937a"
  ],
  "author": {
    "name": "Corentin Chary",
    "email": "corentin.chary@gmail.com",
    "time": "Wed Mar 14 07:58:47 2012 +0100"
  },
  "committer": {
    "name": "Anthony Liguori",
    "email": "aliguori@us.ibm.com",
    "time": "Wed Mar 14 16:22:46 2012 -0500"
  },
  "message": "vnc: don\u0027t mess up with iohandlers in the vnc thread\n\nThe threaded VNC servers messed up with QEMU fd handlers without\nany kind of locking, and that can cause some nasty race conditions.\n\nUsing qemu_mutex_lock_iothread() won\u0027t work because vnc_dpy_cpy(),\nwhich will wait for the current job queue to finish, can be called with\nthe iothread lock held.\n\nInstead, we now store the data in a temporary buffer, and use a bottom\nhalf to notify the main thread that new data is available.\n\nvnc_[un]lock_ouput() is still needed to access VncState members like\nabort, csock or jobs_buffer.\n\nSigned-off-by: Corentin Chary \u003ccorentin.chary@gmail.com\u003e\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9b3016c1293fa744a21eba2ce52c5408dda16023",
      "old_mode": 33188,
      "old_path": "ui/vnc-jobs-async.c",
      "new_id": "087b84d319e6c1f565cc21599eb8cfa3c38f0982",
      "new_mode": 33188,
      "new_path": "ui/vnc-jobs-async.c"
    },
    {
      "type": "modify",
      "old_id": "b8dab8169f681e575178bddbd42138185126f07b",
      "old_mode": 33188,
      "old_path": "ui/vnc-jobs.h",
      "new_id": "4c661f95e51aa8e0059ecdd1c375c33b13d4c5ef",
      "new_mode": 33188,
      "new_path": "ui/vnc-jobs.h"
    },
    {
      "type": "modify",
      "old_id": "bdec33a470fab84efa8ce10082f547689668335c",
      "old_mode": 33188,
      "old_path": "ui/vnc.c",
      "new_id": "aef6d3af2607a1260ed1fbd16849a84c6dfdc8ec",
      "new_mode": 33188,
      "new_path": "ui/vnc.c"
    },
    {
      "type": "modify",
      "old_id": "0bd1fc6d2342edabd0556130bbf8e6de1c563917",
      "old_mode": 33188,
      "old_path": "ui/vnc.h",
      "new_id": "a851ebd8ea723367fcd299114923d18a330e6df5",
      "new_mode": 33188,
      "new_path": "ui/vnc.h"
    }
  ]
}
