Эх сурвалжийг харах

update jerry_event.c and jerry_event.h

Signed-off-by: yangfasheng <yangfasheng@rt-thread.com>
yangfasheng 7 жил өмнө
parent
commit
5e5f8af34a

+ 26 - 21
rtthread-port/jerry_event.c

@@ -223,6 +223,31 @@ void js_add_event_listener(jerry_value_t obj, const char *event_name, jerry_valu
     }
 }
 
+void js_remove_event_listener(jerry_value_t obj, const char *event_name)
+{
+    void *native_handle = NULL;
+
+    jerry_get_object_native_pointer(obj, &native_handle, NULL);
+    if (native_handle)
+    {
+        struct js_emitter *emitter = (struct js_emitter *)native_handle;
+        struct js_event *event = find_event(emitter, event_name);
+        if (event)
+        {
+            struct js_listener *_listener, *listener = event->listeners;
+
+            while (listener != NULL)
+            {
+                _listener = listener;
+                listener = listener->next;
+                free_listener(_listener);
+            }
+
+            event->listeners = NULL;
+        }
+    }
+}
+
 rt_bool_t js_emit_event(jerry_value_t obj, const char *event_name, const jerry_value_t argv[], const jerry_length_t argc)
 {
     void *native_handle = NULL;
@@ -308,27 +333,7 @@ DECLARE_HANDLER(remove_all_listeners)
         char *name = js_value_to_string(args[0]);
         if (name)
         {
-            void *native_handle = NULL;
-
-            jerry_get_object_native_pointer(this_value, &native_handle, NULL);
-            if (native_handle)
-            {
-                struct js_emitter *emitter = (struct js_emitter *)native_handle;
-                struct js_event *event = find_event(emitter, name);
-                if (event)
-                {
-                    struct js_listener *_listener, *listener = event->listeners;
-
-                    while (listener != NULL)
-                    {
-                        _listener = listener;
-                        listener = listener->next;
-                        free_listener(_listener);
-                    }
-
-                    event->listeners = NULL;
-                }
-            }
+            js_remove_event_listener(this_value, name);
         }
         rt_free(name);
     }

+ 1 - 0
rtthread-port/jerry_event.h

@@ -10,6 +10,7 @@ extern "C" {
 #endif
 
 void js_add_event_listener(jerry_value_t obj, const char *event_name, jerry_value_t func);
+void js_remove_event_listener(jerry_value_t obj, const char *event_name);
 rt_bool_t js_emit_event(jerry_value_t obj, const char *event_name, const jerry_value_t argv[], const jerry_length_t argc);
 void js_destroy_emitter(jerry_value_t obj);
 void js_make_emitter(jerry_value_t obj, jerry_value_t prototype);