)]}'
{
  "commit": "0a6e118d49f2e18c036163297f6466dd68aacaac",
  "tree": "2ec63c9d14eb461968b5847120f6df28fef44fae",
  "parents": [
    "0d224ccea3cd4fa50c70aad437484aa5e895292f"
  ],
  "author": {
    "name": "Brandon Schade",
    "email": "b.schade@samsung.com",
    "time": "Mon Jan 27 13:37:29 2020 -0800"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Sun Feb 09 15:08:10 2020 +0000"
  },
  "message": "Change g_Mutex from std::mutex to std::recursive_mutex\n\nWhen running flatland on android-10.0.0_r21 (Pixel 3), libgui\u0027s ~EglImage calls\neglTerminate which grabs angle\u0027s EGL entry point mutex. The path continues\nto libvulkan where eventually another egl call happens (eglDestroyImageKHR) and\nit will attempt to take the mutex at the entry point again. So we try to get the\nmutex multiple times from the same thread.\n\nChange this mutex to a recursive_mutex to allow for this re-entry of EGL calls\n\nTests: android-10.0.0_r21/frameworks/native/cmds/flatland\nBug: angleproject:4354\nChange-Id: If8a817df45e9f58d5f06884510350e17d7127fa9\nReviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2029218\nCommit-Queue: Jamie Madill \u003cjmadill@chromium.org\u003e\nReviewed-by: Jamie Madill \u003cjmadill@chromium.org\u003e\nReviewed-by: Cody Northrop \u003ccnorthrop@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5cd471faf4029928c94a80d98b44a7d5ff4b599e",
      "old_mode": 33188,
      "old_path": "CONTRIBUTORS",
      "new_id": "f31c653789bec69e075cc96fec354d737bfca3ec",
      "new_mode": 33188,
      "new_path": "CONTRIBUTORS"
    },
    {
      "type": "modify",
      "old_id": "26bb12755665e53c6a6aee882e5553849c07d6fc",
      "old_mode": 33188,
      "old_path": "scripts/code_generation_hashes/GL_EGL_entry_points.json",
      "new_id": "a3dd224705689c80b09798a0f9966ccd2af9a443",
      "new_mode": 33188,
      "new_path": "scripts/code_generation_hashes/GL_EGL_entry_points.json"
    },
    {
      "type": "modify",
      "old_id": "8fdffd74d24cf250f5bf2bf1a49ce218304d036f",
      "old_mode": 33261,
      "old_path": "scripts/generate_entry_points.py",
      "new_id": "6001e9ffa6268e93e70a856577cb214d5f96fe7a",
      "new_mode": 33261,
      "new_path": "scripts/generate_entry_points.py"
    },
    {
      "type": "modify",
      "old_id": "b4bb30320ec9ff2fca9c2054378e53250f755432",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_1_0_autogen.cpp",
      "new_id": "2e4e0b408f7f1be27b282403141cc5773f58c902",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_1_0_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "8b350036ec280924fdb93fd1a083992ecd25e407",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_1_1_autogen.cpp",
      "new_id": "a96d5833db472421f634cc5f4d7cbb0fccd08b7e",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_1_1_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "401d41aa211d8f816272abf9698c46901b7c3ab6",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_1_2_autogen.cpp",
      "new_id": "89c2914192805b9cf319566702041f140a9f48e1",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_1_2_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "f4443ec5ae0c9c6b03999f4344c8cd656c3039a8",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_1_3_autogen.cpp",
      "new_id": "ba39cabd2fd46251328bb90c2b79570413675eae",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_1_3_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "9c46dffca97c2b9b3f04b0fc9462cc988afe55a0",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_1_4_autogen.cpp",
      "new_id": "9d07ddfa02993ddcb35f835aa66da96347c187a8",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_1_4_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "b2baef7205f35762102d55efe365caf3258e17c4",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_1_5_autogen.cpp",
      "new_id": "8a1ed4b332fdb2c40beb30d7961672fdc2d975cb",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_1_5_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "941eb511064998c42fa0a3e5bfb37ddd6102232e",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_2_0_autogen.cpp",
      "new_id": "22d10e92c5f787fe51e6959da12a6a87a200dfed",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_2_0_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "c9410cc5e4f20cd18cc257f013886a3a9e27f2c8",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_2_1_autogen.cpp",
      "new_id": "d528bc3e0e0e2e0f373ec883756dd58764acd2fb",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_2_1_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "80c9192bde3aee173099bc7778da28fb0248a257",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_3_0_autogen.cpp",
      "new_id": "91aa15aaa941a827a743749f5726119f748b7f92",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_3_0_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "5a078ee42d2bca15fb6c7bf418f62d25e27840c5",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_3_1_autogen.cpp",
      "new_id": "81701fbb2de1043f1e81402fa8ea31098be76612",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_3_1_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "1de364f4ad0e334667ea8532786dfa73820759c3",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_3_2_autogen.cpp",
      "new_id": "bc821fbe4181ec2f32f35d71f6e6cb030c9a9137",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_3_2_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "c6b4b1e24e4209d746d7d584f5cda8b1d413fdeb",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_3_3_autogen.cpp",
      "new_id": "7783c7e60d9494619d67192711cf8c852b080c1b",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_3_3_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "f9277b4ff779dc83f2223ab6a52d24fd248d8a59",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_4_0_autogen.cpp",
      "new_id": "9580f97ee30ca38d6c53016a432c44ce31e36bca",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_4_0_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "b42d31a3ab92298cd04c21f97a6a0b9fbdb0268c",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_4_1_autogen.cpp",
      "new_id": "f9567e81a5a082aa52f7e59f6ccfcca5f634b50c",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_4_1_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "8391bba7307be25fb080a4948653052afa37b4bf",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_4_2_autogen.cpp",
      "new_id": "6ee71f1e4023482a29e0701260f94b2eb0b1f7ba",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_4_2_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "af9619c65b6030e4e8e9d6df7c8831b4d099e4b2",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_4_3_autogen.cpp",
      "new_id": "925d8b1820d021aa21c94a1615ecfd8c1080b2f9",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_4_3_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "985f4c2e6c5d804c01dc097e1e63508a61dce5b9",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_4_4_autogen.cpp",
      "new_id": "a697b4226aef8cbf65ec337aaf990d46898975f0",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_4_4_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "8bcbbec9b1b9f9dbe24ab32d5c158014dea27078",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_4_5_autogen.cpp",
      "new_id": "4fa1c81d111aa87228361dad3879e743f68381a8",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_4_5_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "cfda1b9f9d6b6cbbd0d86e692158eb8f816ce583",
      "old_mode": 33188,
      "old_path": "src/libGL/entry_points_gl_4_6_autogen.cpp",
      "new_id": "9335a4bab3f40ca5b2f4e5b47a3fe0f156fcd02d",
      "new_mode": 33188,
      "new_path": "src/libGL/entry_points_gl_4_6_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "983269f5ce72a49c64445bb82bcffaaf6b3e99df",
      "old_mode": 33188,
      "old_path": "src/libGLESv2/entry_points_gles_1_0_autogen.cpp",
      "new_id": "3cc35c5914dc808b00c543155aa1ee54de474b2e",
      "new_mode": 33188,
      "new_path": "src/libGLESv2/entry_points_gles_1_0_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "0907806568d981bf26bfdbbd8824c8166f6a8602",
      "old_mode": 33188,
      "old_path": "src/libGLESv2/entry_points_gles_2_0_autogen.cpp",
      "new_id": "a3561496852147c13b45da34241863a254268f03",
      "new_mode": 33188,
      "new_path": "src/libGLESv2/entry_points_gles_2_0_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "f4d0cb9eb22777e98d68ac18ece7b53d9750b754",
      "old_mode": 33188,
      "old_path": "src/libGLESv2/entry_points_gles_3_0_autogen.cpp",
      "new_id": "e67de0b40d7ebf5916e242138ea71c28fe3652ad",
      "new_mode": 33188,
      "new_path": "src/libGLESv2/entry_points_gles_3_0_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "c54063e1746328f6310643b6b508cdadd8099003",
      "old_mode": 33188,
      "old_path": "src/libGLESv2/entry_points_gles_3_1_autogen.cpp",
      "new_id": "f6cefd277889fb93a0386ec4f816b83a5b095fe2",
      "new_mode": 33188,
      "new_path": "src/libGLESv2/entry_points_gles_3_1_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "e956c0097315c9135ab2af1904645c625943e8fb",
      "old_mode": 33188,
      "old_path": "src/libGLESv2/entry_points_gles_3_2_autogen.cpp",
      "new_id": "ddc15ec6800e5cbed785ac7fdbcc74fee366cdea",
      "new_mode": 33188,
      "new_path": "src/libGLESv2/entry_points_gles_3_2_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "c839ae9cc8bd6ba7de9c2b9ef8873773f5c5b072",
      "old_mode": 33188,
      "old_path": "src/libGLESv2/entry_points_gles_ext_autogen.cpp",
      "new_id": "47451f0094be72f3d1a9acdf6d3fa7b037f57bd4",
      "new_mode": 33188,
      "new_path": "src/libGLESv2/entry_points_gles_ext_autogen.cpp"
    },
    {
      "type": "modify",
      "old_id": "7725106a421465af570932f331a2f92202bd9ec1",
      "old_mode": 33188,
      "old_path": "src/libGLESv2/global_state.cpp",
      "new_id": "f40fb77e7e8ad01d37882e7c396fd90f18458490",
      "new_mode": 33188,
      "new_path": "src/libGLESv2/global_state.cpp"
    },
    {
      "type": "modify",
      "old_id": "3667fa58d111756883fe03546b7680d8de0e5d93",
      "old_mode": 33188,
      "old_path": "src/libGLESv2/global_state.h",
      "new_id": "5877b7be1b46ed0f74f10e4f4ce9c44df7173a6f",
      "new_mode": 33188,
      "new_path": "src/libGLESv2/global_state.h"
    }
  ]
}
