From fc9c51bf4c90caf4078771a9cd33523aa8e6e47d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Thu, 29 Dec 2022 13:06:41 -0500 Subject: [PATCH] Add console.flush() method. Seems to work a treat. --- src/sbbs3/js_console.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/sbbs3/js_console.cpp b/src/sbbs3/js_console.cpp index 118f636d03..9a6a0d71bd 100644 --- a/src/sbbs3/js_console.cpp +++ b/src/sbbs3/js_console.cpp @@ -2308,6 +2308,24 @@ js_progress(JSContext *cx, uintN argc, jsval *arglist) return JS_TRUE; } +static JSBool +js_flush(JSContext *cx, uintN argc, jsval *arglist) +{ + sbbs_t* sbbs; + jsrefcount rc; + + if((sbbs=(sbbs_t*)js_GetClassPrivate(cx, JS_THIS_OBJECT(cx, arglist), &js_console_class))==NULL) + return JS_FALSE; + + rc=JS_SUSPENDREQUEST(cx); + SetEvent(sbbs->outbuf.highwater_event); + SetEvent(sbbs->outbuf.data_event); + JS_SET_RVAL(cx, arglist, JSVAL_VOID); + JS_RESUMEREQUEST(cx, rc); + + return JS_TRUE; +} + static jsSyncMethodSpec js_console_functions[] = { {"inkey", js_inkey, 0, JSTYPE_STRING, JSDOCSTR("[mode=<tt>K_NONE</tt>] [,timeout=<tt>0</tt>]") ,JSDOCSTR("get a single key with optional <i>timeout</i> in milliseconds (defaults to 0, for no wait).<br>" @@ -2581,6 +2599,10 @@ static jsSyncMethodSpec js_console_functions[] = { ,JSDOCSTR("removes a callback installed by once") ,31900 }, + {"flush", js_flush, 2, JSTYPE_VOID, JSDOCSTR("type, id") + ,JSDOCSTR("flushes the output buffer") + ,31900 + }, {0} }; -- GitLab