)]}'
{
  "log": [
    {
      "commit": "c2b3cda097d2f8ac9211360aa82995d693e0764c",
      "tree": "8a6baf03da30391ff32d3a269df42dda278f701b",
      "parents": [
        "282ff9ae3f798dec325ce6b868f053649b596a8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 01 11:32:29 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 23 17:49:59 2011 -0800"
      },
      "message": "Bug 3362814 Fix SMP race in access to mRequestExit\n\nAlso fix an unlikely SMP race in access to mHoldSelf on entry to _threadLoop.\n\nChange-Id: I6cbc0b94739c7dd5e77e8a5ba0da22cdc0b1a4db\n"
    },
    {
      "commit": "bb9d394b21bdfeb1ceb4cf6e4ed0306e39757b15",
      "tree": "dbe7d5b2eef96e80ed4a3a1595e1a26cb19e228d",
      "parents": [
        "9497144281b92dd5293ea734d668217bcf4e86e9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 16 10:13:53 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 16 10:56:32 2011 -0800"
      },
      "message": "Clean up use of HAVE_ANDROID_OS\n\nHAVE_ANDROID_OS was defined as \"1\" for targets, but never defined as \"0\"\nfor non-targets. Changing them to #ifdef should be safe and matches\nall the other uses of HAVE_ANDROID_OS throughout the system.\n\nChange-Id: I82257325a8ae5e4e4371ddfc4dbf51cea8ea0abb\n"
    },
    {
      "commit": "e88fa50be8d6709ef58b7aeb01c5efa059bcac2e",
      "tree": "23fd178258f1fc5144dd026fdecaf9e9468a459d",
      "parents": [
        "c12cdda949e6b916dd9e6fa4b30ab8b0d1898faa",
        "65aef1517b070e695e00e9603bf79c166dc4913f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jan 30 15:29:52 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jan 30 15:30:03 2011 -0800"
      },
      "message": "Merge from open-source gingerbread\n\nChange-Id: I56f2ed37187796807fbf0de15274a85164f9432c\n"
    },
    {
      "commit": "2d9299b39d4802a68bfd083a06de347bf1c0721d",
      "tree": "fc298c640dd3543014caba479459057a58659fb7",
      "parents": [
        "e59e0309a1301908eae0075db02413fda90848d5"
      ],
      "author": {
        "name": "Ritu Srivastava",
        "email": "rsrivast@sta.samsung.com",
        "time": "Tue Jan 25 16:23:08 2011 -0800"
      },
      "committer": {
        "name": "Madan Ankapura",
        "email": "mankapur@sta.samsung.com",
        "time": "Tue Jan 25 21:48:54 2011 -0800"
      },
      "message": "fix failing thread object run\n\nA previously exited Thread object refuses to run again, if the\nthread-id of the caller, conincides with the thread-id it previously\nused in the worker thread. Hence reset the previously used worker\nthread-id to -1 when it exits.\n\n Signed-off-by: Ritu Srivastava \u003crsrivast@sta.samsung.com\u003e\n\nChange-Id: I873925c312a43ec8a16392b98cc959042ff6bfd2\n\nSigned-off-by: Madan Ankapura \u003cmankapur@sta.samsung.com\u003e\n"
    },
    {
      "commit": "730ba19bc8c097fdcbee3adb04e86d435640bb72",
      "tree": "be2dc030fe91f723e708a652dea7da9ee30b3690",
      "parents": [
        "8f49c025ca5b4ed84290fb9e5e0b7acb1c139b35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 04 11:58:04 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 04 11:58:04 2011 -0800"
      },
      "message": "Fix issue 3302649.\n\nThe cause of the problem is that AudioTrack::start() can fail if it is called from a newly created\nthread that has the same ID as the AudioTrack callback thread that has just been stopped and not yet exited.\nThis is possible as the thread ID used by the Thread class is not the TID.\n\nThe fix consists in clearing the thread ID before exiting the thread loop.\n\nChange-Id: I66e679665c384403cb3ba2c31746f5de72d5836d\n"
    },
    {
      "commit": "a8512a71d3c2e3e67bbccf11251ed594d66f1f25",
      "tree": "8550bb81ded879af0ce408e8028e6a87812335eb",
      "parents": [
        "a7d868d4f99dfaf85e13498210aecf1ad8efd859"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 09 15:50:18 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 09 22:12:25 2010 -0700"
      },
      "message": "Always set the scheduling group when starting a new thread.\n\nChange-Id: Ia33acf13fc3752707f3819928c36315e223fa1bd\n"
    },
    {
      "commit": "11bbe200cba150cfa5593bb87b54f3072a5ab2c5",
      "tree": "c9dd463aac220da1e76767e4d35f02df2f72704a",
      "parents": [
        "f703b77c96a6d133fda534158eaf6190ff7c87f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 12:32:19 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 12:32:19 2010 -0700"
      },
      "message": "Hopefully fix the build.\n\nChange-Id: Id8cd92c0895c9939e1386ef488bd1309a3be3568\n"
    },
    {
      "commit": "84bb52ed614f3a13370c923a8bc2a8b7c6db8d30",
      "tree": "343bb945db493f71b75b55f99ed1da0a8424d4c3",
      "parents": [
        "69717ccd13bb5568b912701ab39d603cfa7091cc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 03 17:07:07 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 11:19:11 2010 -0700"
      },
      "message": "Add system property to turn off scheduling groups.\n\nDo this:\n\nadb shell setprop debug.sys.noschedgroups 1\n\nChange-Id: I6e06a74205fd45ee1526ce71fe33944465d39984\n"
    },
    {
      "commit": "afbeb31bffd54ecd332da5d3751b42da02b62330",
      "tree": "b501dd35589cf87547a16de82e7ea9a8fb6a96fb",
      "parents": [
        "484fe4d6f45d5dc42c378baaad3fdad7d6ae612f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 19:45:59 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 19:45:59 2009 -0800"
      },
      "message": "Maybe really fix windows build.\n"
    },
    {
      "commit": "06fb2c1c398d91787440978bf358bb9808cc2928",
      "tree": "e7a71ef944a31e1b8fdab4b6351336014cc0383a",
      "parents": [
        "b882b361f123e4ef7870c99e8a9fd9e1be48e396"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 16:38:01 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 16:38:01 2009 -0800"
      },
      "message": "Hopefully fix Windows build\n"
    },
    {
      "commit": "887f355f99ff83d568ef2885a4fdcaae475583df",
      "tree": "c4788aa9ac8f37c6a02fc6b3a6874b71efb0f759",
      "parents": [
        "259e3384face72ea8e30696d7bae492d37d44e8b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 17:59:37 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 19:11:14 2009 -0800"
      },
      "message": "Propagate background scheduling class across processes.\n\nThis is a very simply implementation: upon receiving an IPC, if the handling\nthread is at a background priority (the driver will have taken care of\npropagating this from the calling thread), then stick it in to the background\nscheduling group.  Plus an API to turn this off for the process, which is\nused by the system process.\n\nThis also pulls some of the code for managing scheduling classes out of\nthe Process JNI wrappers and in to some convenience methods in thread.h.\n"
    },
    {
      "commit": "d42bd87f23974164d2539ea85c7b5e6329faf2c2",
      "tree": "9ab3713baa90ff2f06d9937d86900fbf43825c39",
      "parents": [
        "a280496bd2ce04d6beff4536f2115a9a4d7568e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 02:38:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 02:45:26 2009 -0700"
      },
      "message": "use broadcast() instead of signal() when signaling the condition-variable Thread::RequestExitAndWait() is waiting for\n\nwe could have several thread waiting on the condition and they all need to wake-up.\nalso added a debug \"mTid\" field in the class, which contains the tid of the thread (as opposed to pthread_t), this\nis useful when debugging under gdb for instance.\n"
    },
    {
      "commit": "078a2757847dcdd50a254d973d2c9a0556e98d75",
      "tree": "47999cb47222e0e086df3d647ceaa85a0d0c8b86",
      "parents": [
        "d3c6d54de9b9a599eb33f343fb1e0639fed02094"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Aug 01 00:20:17 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Aug 01 10:53:29 2009 +0200"
      },
      "message": "Fix Win32 libutils to get a working SDK build.\n"
    },
    {
      "commit": "b1c4ca5ad21ae63cd5af2cfc1be82ba176d25195",
      "tree": "5a70f426d9b4cd75638a1b17ae2abd264c59eb55",
      "parents": [
        "56e7c2d6ebbde59555041e3550cbba6824486db1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jul 12 23:11:20 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 15:14:23 2009 -0700"
      },
      "message": "implement Mutex and Condition with pthread instead of calling futex directly.\n\ninternally pthread uses futex. the implementation consists of simple inlines\nthere are no implementation files anymore.\n"
    },
    {
      "commit": "4df2423a947bcd3f024cc3d3a1a315a8dc428598",
      "tree": "e7dac2c5a367b169e7f05a36058cf470e93f003b",
      "parents": [
        "c474dec3ffa1c0fe37edb3e701684188f7e8e7bc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 05 14:34:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 05 14:34:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@136594\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "076357b8567458d4b6dfdcf839ef751634cd2bfb",
      "tree": "efbb2fd6f1dc67d2d606382fc3b82983e7cb2e1f",
      "parents": [
        "3dec7d563a2f3e1eb967ce2054a00b6620e3558c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:04:24 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:04:24 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@132589\n"
    },
    {
      "commit": "3dec7d563a2f3e1eb967ce2054a00b6620e3558c",
      "tree": "aa3b0365c47cb3c1607c0dc76c8d32b4046fc287",
      "parents": [
        "15ab3eae2ec3d73b3e8aa60b33ae41445bf83f4b"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:33 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:33 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@137055\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
