func()

in gymvnc/gymvnc.go [259:296]


func (c *VNCSession) Flip() (*Screen, []*vncclient.FramebufferUpdateMessage) {
	c.updated.L.Lock()
	defer c.updated.L.Unlock()

	var updates []*vncclient.FramebufferUpdateMessage

	if c.backUpdated {
		c.frontScreen, c.backScreen = c.backScreen, c.frontScreen
		c.backUpdated = false
		updates = c.deferredUpdates
		go func() {
			c.updated.L.Lock()
			defer c.updated.L.Unlock()

			c.applyDeferred()

			if c.pauseUpdates {
				// Restart the framebuffer request cycle
				c.pauseUpdates = false
				log.Infof("[%s] resuming updates", c.label)
				err := c.requestUpdate()
				if err != nil {
					select {
					case c.mgr.Error <- err:
					default:
					}
				}
			}
		}()

		if c.rendererActive {
			// Keep the GL screen fed
			c.renderer.Apply(updates)
		}
	}

	return c.frontScreen, updates
}