github.com/vugu/vugu@v0.3.6-0.20240430171613-3f6f402e014b/domrender/renderer-js-default.go (about)

     1  package domrender
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/vugu/vugu"
     7  )
     8  
     9  func (r *JSRenderer) sendEventWaitCh() {
    10  
    11  	if panicr := recover(); panicr != nil {
    12  		fmt.Println("handleRawDOMEvent caught panic", panicr)
    13  		//		debug.PrintStack()
    14  
    15  		// in error case send false to tell event loop to exit
    16  		select {
    17  		case r.eventWaitCh <- false:
    18  		default:
    19  		}
    20  		return
    21  
    22  	}
    23  
    24  	// in normal case send true to the channel to tell the event loop it should render
    25  	select {
    26  	case r.eventWaitCh <- true:
    27  	default:
    28  	}
    29  }
    30  
    31  // Render is a render function.
    32  func (r *JSRenderer) Render(buildResults *vugu.BuildResults) error {
    33  
    34  	// acquire read lock so events are not changing data while Render is in progress
    35  	r.eventRWMU.RLock()
    36  	defer r.eventRWMU.RUnlock()
    37  
    38  	err := r.render(buildResults)
    39  	return err
    40  }