mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2026-03-19 10:22:41 +01:00
big update, add goroutine sdl render
replace a lot of self.Screen.Draw() to self.Screen.Refresh()
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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" {
|
||||
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"]) {
|
||||
|
||||
Reference in New Issue
Block a user