zorldo

Goofing around with Ebiten
git clone git://bsandro.tech/zorldo
Log | Files | Refs | README

run_singlethread.go (1473B)


      1 // Copyright 2020 The Ebiten Authors
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //     http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 //go:build ebitensinglethread && (darwin || freebsd || linux || windows) && !android && !ios
     16 // +build ebitensinglethread
     17 // +build darwin freebsd linux windows
     18 // +build !android
     19 // +build !ios
     20 
     21 package glfw
     22 
     23 import (
     24 	"github.com/hajimehoshi/ebiten/v2/internal/driver"
     25 	"github.com/hajimehoshi/ebiten/v2/internal/graphicscommand"
     26 	"github.com/hajimehoshi/ebiten/v2/internal/thread"
     27 )
     28 
     29 func (u *UserInterface) Run(uicontext driver.UIContext) error {
     30 	u.context = uicontext
     31 
     32 	// Initialize the main thread first so the thread is available at u.run (#809).
     33 	u.t = thread.NewNoopThread()
     34 	graphicscommand.SetMainThread(u.t)
     35 
     36 	u.setRunning(true)
     37 
     38 	if err := u.init(); err != nil {
     39 		return err
     40 	}
     41 
     42 	if err := u.loop(); err != nil {
     43 		return err
     44 	}
     45 
     46 	u.setRunning(false)
     47 	return nil
     48 }
     49 
     50 func (u *UserInterface) runOnAnotherThreadFromMainThread(f func() error) error {
     51 	return f()
     52 }