From 34fc006f5e75f064f3aad9ccc98963dc2fa01e25 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Mon, 25 Apr 2016 11:33:53 +0000
Subject: [PATCH] py/modthread: Add with-context capabilities to lock object.

---
 py/modthread.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/py/modthread.c b/py/modthread.c
index 01316f962..fd5932059 100644
--- a/py/modthread.c
+++ b/py/modthread.c
@@ -95,10 +95,17 @@ STATIC mp_obj_t thread_lock_locked(mp_obj_t self_in) {
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(thread_lock_locked_obj, thread_lock_locked);
 
+STATIC mp_obj_t thread_lock___exit__(size_t n_args, const mp_obj_t *args) {
+    return thread_lock_release(args[0]);
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(thread_lock___exit___obj, 4, 4, thread_lock___exit__);
+
 STATIC const mp_rom_map_elem_t thread_lock_locals_dict_table[] = {
     { MP_ROM_QSTR(MP_QSTR_acquire), MP_ROM_PTR(&thread_lock_acquire_obj) },
     { MP_ROM_QSTR(MP_QSTR_release), MP_ROM_PTR(&thread_lock_release_obj) },
     { MP_ROM_QSTR(MP_QSTR_locked), MP_ROM_PTR(&thread_lock_locked_obj) },
+    { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&thread_lock_acquire_obj) },
+    { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&thread_lock___exit___obj) },
 };
 
 STATIC MP_DEFINE_CONST_DICT(thread_lock_locals_dict, thread_lock_locals_dict_table);
-- 
GitLab