big update, add goroutine sdl render

replace a lot of self.Screen.Draw() to self.Screen.Refresh()
This commit is contained in:
cuu
2023-01-23 14:04:11 +00:00
parent 057bcc86f1
commit 7814f9ca6f
40 changed files with 358 additions and 403 deletions

View File

@@ -13,7 +13,7 @@ import (
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
"github.com/cuu/gogame/color"
"github.com/cuu/gogame/time"
//"github.com/cuu/gogame/time"
)
type FavListPage struct {
@@ -378,8 +378,7 @@ func (self *FavListPage) Click() {
} else {
self.Screen.PushCurPage()
self.Screen.SetCurPage(self.RomSoConfirmDownloadPage)
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}
@@ -387,8 +386,7 @@ func (self *FavListPage) Click() {
}
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
func (self *FavListPage) ReScan() {
@@ -417,14 +415,12 @@ func (self *FavListPage) ReScan() {
func (self *FavListPage) OnReturnBackCb() {
self.ReScan()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
func (self *FavListPage) OnLoadCb() {
self.ReScan()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
func (self *FavListPage) SpeedScroll(thekey string) {
@@ -447,22 +443,19 @@ func (self *FavListPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == UI.CurKeys["Menu"] || ev.Data["Key"] == UI.CurKeys["Left"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Up"] {
self.SpeedScroll(ev.Data["Key"])
self.ScrollUp()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Down"] {
self.SpeedScroll(ev.Data["Key"])
self.ScrollDown()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Enter"] {
@@ -471,8 +464,7 @@ func (self *FavListPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == UI.CurKeys["X"] { //Scan current
self.ReScan()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Y"] { // del
@@ -484,13 +476,9 @@ func (self *FavListPage) KeyDown(ev *event.Event) {
if cur_li.(*EmulatorListItem).IsFile() {
uid := UI.GetUid(cur_li.(*EmulatorListItem).Path)
os.Chown(cur_li.(*EmulatorListItem).Path, uid, uid)
self.Screen.MsgBox.SetText("Deleting")
self.Screen.MsgBox.Draw()
self.Screen.SwapAndShow()
time.BlockDelay(600)
self.Screen.ShowMsg("Deleting",600)
self.ReScan()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}
}

View File

@@ -9,7 +9,7 @@ import (
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
"github.com/cuu/gogame/color"
"github.com/cuu/gogame/event"
"github.com/cuu/gogame/time"
//"github.com/cuu/gogame/time"
"github.com/veandco/go-sdl2/ttf"
"os/exec"
"path/filepath"
@@ -406,8 +406,7 @@ func (self *RomListPage) Click() {
} else {
self.Screen.PushCurPage()
self.Screen.SetCurPage(self.RomSoConfirmDownloadPage)
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}
@@ -415,8 +414,7 @@ func (self *RomListPage) Click() {
}
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
func (self *RomListPage) ReScan() {
@@ -435,8 +433,7 @@ func (self *RomListPage) ReScan() {
func (self *RomListPage) OnReturnBackCb() {
self.ReScan()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
func (self *RomListPage) SpeedScroll(thekey string) {
@@ -459,29 +456,25 @@ func (self *RomListPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == UI.CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Right"] {
self.Screen.PushCurPage()
self.Screen.SetCurPage(self.Leader.FavPage)
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Up"] {
self.SpeedScroll(ev.Data["Key"])
self.ScrollUp()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Down"] {
self.SpeedScroll(ev.Data["Key"])
self.ScrollDown()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Enter"] {
@@ -502,21 +495,15 @@ func (self *RomListPage) KeyDown(ev *event.Event) {
fmt.Println(err)
}
self.Screen.MsgBox.SetText("Add to favourite list")
self.Screen.MsgBox.Draw()
self.Screen.SwapAndShow()
time.BlockDelay(600)
self.Screen.ShowMsg("Add to favourite list",600)
self.ReScan()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}
if ev.Data["Key"] == UI.CurKeys["X"] { //Scan current
self.ReScan()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["Y"] { // del
@@ -531,9 +518,8 @@ func (self *RomListPage) KeyDown(ev *event.Event) {
self.Screen.PushCurPage()
self.Screen.SetCurPage(self.Leader.DeleteConfirmPage)
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}
}

View File

@@ -59,23 +59,20 @@ func (self *RomSoConfirmPage) Init() {
func (self *RomSoConfirmPage) SnapMsg(msg string) {
self.MyList[0].SetText(msg)
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
self.MyList[0].SetText(self.ConfirmText)
}
func (self *RomSoConfirmPage) OnReturnBackCb() {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
func (self *RomSoConfirmPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == UI.CurKeys["Menu"] || ev.Data["Key"] == UI.CurKeys["A"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == UI.CurKeys["B"] {
@@ -91,8 +88,7 @@ func (self *RomSoConfirmPage) KeyDown(ev *event.Event) {
}
self.Screen.PushPage(self.DownloadPage)
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
ec := self.Parent.GetEmulatorConfig()
if sysgo.CurKeySet == "PC" {

View File

@@ -141,8 +141,7 @@ func (self *ConfirmPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == CurKeys["A"] || ev.Data["Key"] == CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}

View File

@@ -38,8 +38,7 @@ func (self *DeleteConfirmPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == CurKeys["A"] || ev.Data["Key"] == CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == CurKeys["B"] {
@@ -51,21 +50,17 @@ func (self *DeleteConfirmPage) KeyDown(ev *event.Event) {
err = os.Rename(filepath.Base(self.FileName), filepath.Join(self.TrashDir, filepath.Base(self.FileName)))
if err != nil {
if strings.Contains(err.Error(), "exists") {
self.Screen.MsgBox.SetText("Already Existed")
self.Screen.ShowMsg("Already Existed",0)
} else {
self.Screen.MsgBox.SetText("Error")
self.Screen.ShowMsg("Error",0)
}
self.Screen.MsgBox.Draw()
self.Screen.SwapAndShow()
} else {
self.SnapMsg("Deleting")
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
self.Reset()
time.BlockDelay(300)
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
fmt.Println(self.FileName)

View File

@@ -126,8 +126,7 @@ func (self *DownloadProcessPage) UpdateProcessInterval() {
self.FileNameLabel.SetText(filepath.Base(self.resp.Filename))
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
if self.resp.Progress() >= 1.0 {
// download is complete
@@ -187,8 +186,7 @@ func (self *DownloadProcessPage) DownloadErr() {
func (self *DownloadProcessPage) DoneAndReturnUpLevel() {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
func (self *DownloadProcessPage) StartDownload(_url, dst_dir string) {
@@ -229,8 +227,7 @@ func (self *DownloadProcessPage) KeyDown(ev *event.Event) {
self.StopDownload()
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}

View File

@@ -449,15 +449,14 @@ func (self *Keyboard) KeyDown(ev *event.Event) {
if ev.Data["Key"] == CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == CurKeys["Y"] { // done
fmt.Println(strings.Join(self.Textarea.MyWords, ""))
self.ReturnToUpLevelPage()
self.Screen.SwapAndShow()
self.Screen.Refresh()
if self.Caller != nil {
self.Caller.OnKbdReturnBackCb()
}

View File

@@ -1,7 +1,7 @@
package UI
import (
//"fmt"
"fmt"
"github.com/veandco/go-sdl2/sdl"
"github.com/veandco/go-sdl2/ttf"
@@ -112,7 +112,11 @@ func (self *Label) Draw() {
my_text := font.Render(self.FontObj, self.Text, true, self.Color, nil)
rect_ := rect.Rect(self.PosX, self.PosY, self.Width, self.Height)
surface.Blit(self.CanvasHWND, my_text, &rect_, nil)
my_text.Free()
if my_text == nil || my_text.W <= 0 {
fmt.Println("%#v",my_text,self.FontObj)
}else{
surface.Blit(self.CanvasHWND, my_text, &rect_, nil)
my_text.Free()
}
}

View File

@@ -45,6 +45,7 @@ type ScreenInterface interface {
SetCurPage(pg PageInterface)
SwapAndShow()
IsWifiConnectedNow()
Refresh()
}
type PluginConfig struct {
@@ -185,7 +186,8 @@ type MainScreen struct {
LastKey string
LastKeyDown gotime.Time
updateScreen chan bool
}
func NewMainScreen() *MainScreen {
@@ -199,6 +201,9 @@ func NewMainScreen() *MainScreen {
m.MsgBoxFont = Fonts["veramono20"]
m.IconFont = Fonts["varela15"]
m.Closed = false
m.updateScreen = make(chan bool,1)
return m
}
@@ -217,7 +222,11 @@ func (self *MainScreen) Init() {
self.CounterScreen.Init()
//self.GenList() // load predefined plugin list,ready to be injected ,or ,as a .so for dynamic loading
go func() {
sdl.Do(func() {
self.RefreshLoop()
})
}()
}
func (self *MainScreen) FartherPages() { // right after ReadTheDirIntoPages
@@ -272,6 +281,7 @@ func (self *MainScreen) SwapAndShow() {
surface.Blit(self.HWND, self.CanvasHWND, &rect_, nil)
}
display.Flip()
}
@@ -443,3 +453,23 @@ func (self *MainScreen) Draw() {
self.FootBar.Draw()
}
}
func (self *MainScreen) Refresh() {
self.updateScreen <- true
}
func (self *MainScreen) RefreshLoop() {
L:
for {
select {
case v:= <- self.updateScreen:
if v == true {
self.Draw()
self.SwapAndShow()
}
if v== false {
break L
}
}
}
}

View File

@@ -815,16 +815,14 @@ func (self *Page) KeyDown(ev *event.Event) {
if self.FootMsg[3] == "Back" {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
return
}
}
if ev.Data["Key"] == CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if ev.Data["Key"] == CurKeys["Right"] {
@@ -836,8 +834,7 @@ func (self *Page) KeyDown(ev *event.Event) {
}
self.PsIndex = self.IconIndex
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}
@@ -849,15 +846,13 @@ func (self *Page) KeyDown(ev *event.Event) {
self.IconsEasingRight(IconWidth + self.PageIconMargin)
}
self.PsIndex = self.IconIndex
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}
if ev.Data["Key"] == CurKeys["Enter"] {
self.IconClick()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
}

View File

@@ -132,7 +132,7 @@ func NewTitleBar() *TitleBar {
t.icon_base_path = SkinMap("sysgo/gameshell/titlebar_icons/")
t.TitleFont = Fonts["notosanscjk15"]
t.TitleFont = Fonts["varela16"]
t.TimeFont = Fonts["varela12"]
t.InLowBackLight = -1

View File

@@ -37,8 +37,7 @@ func (self *YesCancelConfirmPage) KeyDown(ev *event.Event) {
if IsKeyMenuOrB(ev.Data["Key"]) {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Refresh()
}
if IsKeyStartOrA(ev.Data["Key"]) {