MCPcopy Create free account
hub / github.com/DISTRHO/DPF / web_wake_idle

Function web_wake_idle

distrho/extra/WebViewImpl.cpp:951–1000  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

949 DISTRHO_SAFE_ASSERT_RETURN(NAME != nullptr, false);
950
951static int web_wake_idle(void* const ptr)
952{
953 WebViewRingBuffer* const shmptr = static_cast<WebViewRingBuffer*>(ptr);
954
955 RingBufferControl<WebViewSharedBuffer> rbctrl;
956 rbctrl.setRingBuffer(&shmptr->client, false);
957
958 uint32_t size = 0;
959 void* buffer = nullptr;
960
961 while (rbctrl.isDataAvailableForReading())
962 {
963 switch (rbctrl.readUInt())
964 {
965 case kWebViewMessageEvaluateJS:
966 if (const uint32_t len = rbctrl.readUInt())
967 {
968 if (len > size)
969 {
970 size = len;
971 buffer = realloc(buffer, len);
972
973 if (buffer == nullptr)
974 {
975 d_stderr("client kWebViewMessageEvaluateJS out of memory, abort!");
976 abort();
977 }
978 }
979
980 if (rbctrl.readCustomData(buffer, len))
981 {
982 d_debug("client kWebViewMessageEvaluateJS -> '%s'", static_cast<char*>(buffer));
983 webFramework->evaluate(static_cast<char*>(buffer));
984 continue;
985 }
986 }
987 break;
988 case kWebViewMessageReload:
989 d_debug("client kWebViewMessageReload");
990 webFramework->reload();
991 continue;
992 }
993
994 d_stderr("client ringbuffer data race, abort!");
995 abort();
996 }
997
998 free(buffer);
999 return 0;
1000}
1001
1002// -----------------------------------------------------------------------------------------------------------
1003// gtk3 variant

Callers 1

customEventMethod · 0.85

Calls 5

d_stderrFunction · 0.85
d_debugFunction · 0.85
evaluateMethod · 0.45
reloadMethod · 0.45

Tested by

no test coverage detected