Fix lag issues
This commit is contained in:
@@ -219,7 +219,9 @@ func main() {
|
||||
*/
|
||||
|
||||
originator := JidMustParse(m.From).Bare()
|
||||
mStatus.SetText(originator)
|
||||
glib.IdleAdd(func() {
|
||||
mStatus.SetText(originator)
|
||||
})
|
||||
|
||||
at := new(Attention)
|
||||
ok = m.Get(at)
|
||||
@@ -280,7 +282,6 @@ func main() {
|
||||
}
|
||||
|
||||
glib.IdleAdd(func() {
|
||||
//uiQueue <- func() {
|
||||
b := gtk.NewBox(gtk.OrientationVertical, 0)
|
||||
|
||||
tab, ok := tabs.Load(originator)
|
||||
@@ -303,7 +304,6 @@ func main() {
|
||||
if ok {
|
||||
b.Append(ba)
|
||||
}
|
||||
//}
|
||||
})
|
||||
})
|
||||
|
||||
@@ -464,11 +464,13 @@ func main() {
|
||||
return
|
||||
}
|
||||
_ = <-mychan
|
||||
|
||||
pingStatus.RemoveCSSClass("pending")
|
||||
delay := time.Since(before) / time.Millisecond
|
||||
pingStatus.SetText(fmt.Sprintf("%d %s", delay, loadedLocale["milliseconds"]))
|
||||
pingTimes[0] = append(pingTimes[0], float64(delay))
|
||||
|
||||
glib.IdleAdd(func() {
|
||||
pingStatus.RemoveCSSClass("pending")
|
||||
pingStatus.SetText(fmt.Sprintf("%d %s", delay, loadedLocale["milliseconds"]))
|
||||
})
|
||||
}()
|
||||
|
||||
}
|
||||
@@ -480,28 +482,30 @@ func main() {
|
||||
go func() {
|
||||
for {
|
||||
time.Sleep(1 * time.Second)
|
||||
stat, err := xmlLog.Stat()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
glib.IdleAdd(func() {
|
||||
stat, err := xmlLog.Stat()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
newsize = stat.Size()
|
||||
diff := float64(newsize-oldsize) / 1000
|
||||
newsize = stat.Size()
|
||||
diff := float64(newsize-oldsize) / 1000
|
||||
|
||||
if diff > 100 {
|
||||
sIcon.SetFromPaintable(clientAssets["car_high"])
|
||||
} else {
|
||||
sIcon.SetFromPaintable(clientAssets["car"])
|
||||
}
|
||||
|
||||
sStatus.SetText(fmt.Sprintf("%.2f%s", diff, loadedLocale["KBPerSecond"]))
|
||||
oldsize = stat.Size()
|
||||
ic := clientAssets["car"]
|
||||
if diff >= 25 {
|
||||
ic = clientAssets["car_high"]
|
||||
}
|
||||
sStatus.SetText(fmt.Sprintf("%.2f%s", diff, loadedLocale["KBPerSecond"]))
|
||||
sIcon.SetFromPaintable(ic)
|
||||
})
|
||||
}
|
||||
}()
|
||||
|
||||
connectionStatus.SetText(fmt.Sprintf("%s%s", loadedLocale["connectedAs"], JidMustParse(clientroot.Session.BindJid).Bare()))
|
||||
connectionStatus.SetTooltipText(fmt.Sprintf("%s%s\n%s%t", loadedLocale["bindedJid"], clientroot.Session.BindJid, loadedLocale["usingTLS"], clientroot.Session.TlsEnabled))
|
||||
connectionIcon.SetFromPaintable(clientAssets["connect"])
|
||||
glib.IdleAdd(func() {
|
||||
connectionStatus.SetText(fmt.Sprintf("%s%s", loadedLocale["connectedAs"], JidMustParse(clientroot.Session.BindJid).Bare()))
|
||||
connectionStatus.SetTooltipText(fmt.Sprintf("%s%s\n%s%t", loadedLocale["bindedJid"], clientroot.Session.BindJid, loadedLocale["usingTLS"], clientroot.Session.TlsEnabled))
|
||||
connectionIcon.SetFromPaintable(clientAssets["connect"])
|
||||
})
|
||||
// Enable carbons
|
||||
client.SendRaw(fmt.Sprintf(
|
||||
`<iq xmlns='jabber:client'
|
||||
@@ -526,6 +530,8 @@ func main() {
|
||||
node := item.Any
|
||||
autojoin := false
|
||||
name := ""
|
||||
password := ""
|
||||
nick := loadedConfig.Nick
|
||||
for _, attr := range node.Attrs {
|
||||
if attr.Name.Local == "autojoin" {
|
||||
autojoin = attr.Value == "true"
|
||||
@@ -540,27 +546,6 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
_, ok := tabs.Load(jid)
|
||||
if !ok && autojoin {
|
||||
createTab(jid, true, name)
|
||||
b := gtk.NewLabel(jid)
|
||||
gesture1 := gtk.NewGestureClick()
|
||||
gesture1.SetButton(1)
|
||||
gesture1.Connect("pressed", func() {
|
||||
switchToTab(jid, &window.Window)
|
||||
})
|
||||
|
||||
b.AddController(gesture1)
|
||||
menu.Append(b)
|
||||
}
|
||||
}
|
||||
|
||||
for _, item := range res.Items.List {
|
||||
|
||||
jid := item.Id
|
||||
node := item.Any
|
||||
autojoin := false
|
||||
nick := loadedConfig.Nick
|
||||
for _, attr := range node.Attrs {
|
||||
if attr.Name.Local == "autojoin" {
|
||||
autojoin = attr.Value == "true"
|
||||
@@ -575,22 +560,40 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
if autojoin {
|
||||
err := joinMuc(client, clientroot.Session.BindJid, jid, nick, "")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
for _, node := range node.Nodes {
|
||||
if node.XMLName.Local == "password" {
|
||||
password = node.Content
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
_, ok := tabs.Load(jid)
|
||||
if !ok && autojoin {
|
||||
joinMuc(client, clientroot.Session.BindJid, jid, nick, password)
|
||||
createTab(jid, true, name)
|
||||
glib.IdleAdd(func() {
|
||||
b := gtk.NewLabel(jid)
|
||||
gesture1 := gtk.NewGestureClick()
|
||||
gesture1.SetButton(1)
|
||||
gesture1.Connect("pressed", func() {
|
||||
switchToTab(jid, &window.Window)
|
||||
})
|
||||
|
||||
b.AddController(gesture1)
|
||||
menu.Append(b)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
conc := func() {
|
||||
time.Sleep(3 * time.Second)
|
||||
// time.Sleep(3 * time.Second)
|
||||
connectionStatus.SetText(loadedLocale["connecting"])
|
||||
connectionIcon.SetFromPaintable(clientAssets["hourglass"])
|
||||
|
||||
@@ -604,8 +607,8 @@ func main() {
|
||||
|
||||
app := gtk.NewApplication("net.sunglocto.lambda", gio.ApplicationFlagsNone)
|
||||
app.ConnectActivate(func() {
|
||||
go conc()
|
||||
activate(app)
|
||||
go conc()
|
||||
})
|
||||
|
||||
if code := app.Run(os.Args); code > 0 {
|
||||
@@ -633,8 +636,26 @@ func activate(app *gtk.Application) {
|
||||
|
||||
aboutAction := gio.NewSimpleAction("about", nil)
|
||||
aboutAction.ConnectActivate(func(p *glib.Variant) {
|
||||
a := gtk.AboutDialog{}
|
||||
a.SetVisible(true)
|
||||
a := gtk.NewAboutDialog()
|
||||
about_window := gtk.NewWindow()
|
||||
about_window.SetTransientFor(&window.Window)
|
||||
about_window.SetTitle(fmt.Sprintf("%s %s", "About", loadedLocale["appName"]))
|
||||
a.SetProgramName("Lambda")
|
||||
a.SetVersion(lambda_version)
|
||||
a.SetComments("yet another XMPP client")
|
||||
a.SetAuthors([]string{"Sunglocto"})
|
||||
a.SetLicense("GPL3")
|
||||
a.SetWebsite("https://forge.sunglocto.net/sunglocto/lambda")
|
||||
a.SetWebsiteLabel("Website")
|
||||
|
||||
/*
|
||||
a.ConnectResponse(func() {
|
||||
about_window.SetVisible(false)
|
||||
})
|
||||
*/
|
||||
about_window.SetChild(a)
|
||||
about_window.SetDefaultSize(400, 300)
|
||||
about_window.SetVisible(true)
|
||||
})
|
||||
|
||||
destroymucAction := gio.NewSimpleAction("destroymuc", nil)
|
||||
@@ -743,7 +764,16 @@ func activate(app *gtk.Application) {
|
||||
|
||||
nick_entry.SetText(loadedConfig.Nick)
|
||||
|
||||
create_jid := gtk.NewImageFromPaintable(clientAssets["jabber"])
|
||||
gesture := gtk.NewGestureClick()
|
||||
gesture.SetButton(1)
|
||||
gesture.Connect("pressed", func() {
|
||||
jidBuilder(jid_entry)
|
||||
})
|
||||
create_jid.AddController(gesture)
|
||||
|
||||
jid_box.Append(gtk.NewLabel(loadedLocale["joinMUCJIDEntry"]))
|
||||
jid_box.Append(create_jid)
|
||||
jid_box.Append(jid_entry)
|
||||
|
||||
nick_box.Append(gtk.NewLabel(loadedLocale["joinMUCNickEntry"]))
|
||||
@@ -946,7 +976,7 @@ func activate(app *gtk.Application) {
|
||||
app.AddAction(aboutAction)
|
||||
app.AddAction(destroymucAction)
|
||||
|
||||
the_menu.AppendSubmenu("File", fileMenu)
|
||||
the_menu.AppendSubmenu("MUC", fileMenu)
|
||||
the_menu.AppendSubmenu("Help", helpMenu)
|
||||
|
||||
the_menuBar := gtk.NewPopoverMenuBarFromModel(the_menu)
|
||||
|
||||
Reference in New Issue
Block a user