Skip to content

Commit 86b87c2

Browse files
authored
fix slow aifalse (#631)
1 parent e9eb4c5 commit 86b87c2

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

plugin/ai_false/ai_false.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,13 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
187187
back = imgfactory.Size(back, int(bw*cw/bw), int(bh*cw/bw)).Image()
188188
canvas.DrawImage(back, 0, 0)
189189
}
190-
190+
var blurback image.Image
191+
bwg := &sync.WaitGroup{}
192+
bwg.Add(1)
193+
go func() {
194+
defer bwg.Done()
195+
blurback = imaging.Blur(canvas.Image(), 8)
196+
}()
191197
wg := &sync.WaitGroup{}
192198
wg.Add(5)
193199

@@ -200,8 +206,8 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
200206
go func() {
201207
defer wg.Done()
202208
titlecard := gg.NewContext(cardw, titlecardh)
203-
204-
titlecard.DrawImage(imaging.Blur(canvas.Image(), 8), -70, -70)
209+
bwg.Wait()
210+
titlecard.DrawImage(blurback, -70, -70)
205211

206212
titlecard.DrawRoundedRectangle(1, 1, float64(titlecard.W()-1*2), float64(titlecardh-1*2), 16)
207213
titlecard.SetLineWidth(3)
@@ -253,8 +259,8 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
253259
go func() {
254260
defer wg.Done()
255261
basiccard := gg.NewContext(cardw, basiccardh)
256-
257-
basiccard.DrawImage(imaging.Blur(canvas.Image(), 8), -70, -70-titlecardh-40)
262+
bwg.Wait()
263+
basiccard.DrawImage(blurback, -70, -70-titlecardh-40)
258264

259265
basiccard.DrawRoundedRectangle(1, 1, float64(basiccard.W()-1*2), float64(basiccardh-1*2), 16)
260266
basiccard.SetLineWidth(3)
@@ -317,7 +323,8 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
317323
go func() {
318324
defer wg.Done()
319325
diskcard := gg.NewContext(cardw, diskcardh)
320-
diskcard.DrawImage(imaging.Blur(canvas.Image(), 8), -70, -70-titlecardh-40-basiccardh-40)
326+
bwg.Wait()
327+
diskcard.DrawImage(blurback, -70, -70-titlecardh-40-basiccardh-40)
321328

322329
diskcard.DrawRoundedRectangle(1, 1, float64(diskcard.W()-1*2), float64(diskcardh-1*2), 16)
323330
diskcard.SetLineWidth(3)
@@ -335,6 +342,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
335342
if dslen == 1 {
336343
diskcard.SetRGBA255(192, 192, 192, 255)
337344
diskcard.DrawRoundedRectangle(40, 40, float64(diskcard.W())-40-100, 50, 12)
345+
diskcard.ClipPreserve()
338346
diskcard.Fill()
339347

340348
switch {
@@ -348,7 +356,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
348356

349357
diskcard.DrawRoundedRectangle(40, 40, (float64(diskcard.W())-40-100)*diskstate[0].precent*0.01, 50, 12)
350358
diskcard.Fill()
351-
359+
diskcard.ResetClip()
352360
diskcard.SetRGBA255(30, 30, 30, 255)
353361

354362
fw, _ := diskcard.MeasureString(diskstate[0].name)
@@ -392,8 +400,8 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
392400
go func() {
393401
defer wg.Done()
394402
moreinfocard := gg.NewContext(cardw, moreinfocardh)
395-
396-
moreinfocard.DrawImage(imaging.Blur(canvas.Image(), 8), -70, -70-titlecardh-40-basiccardh-40-diskcardh-40)
403+
bwg.Wait()
404+
moreinfocard.DrawImage(blurback, -70, -70-titlecardh-40-basiccardh-40-diskcardh-40)
397405

398406
moreinfocard.DrawRoundedRectangle(1, 1, float64(moreinfocard.W()-1*2), float64(moreinfocard.H()-1*2), 16)
399407
moreinfocard.SetLineWidth(3)
@@ -430,7 +438,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
430438
shadow.Stroke()
431439
shadow.DrawRoundedRectangle(70, float64(70+titlecardh+40), float64(cardw), float64(basiccardh), 16)
432440
shadow.Stroke()
433-
shadow.DrawRoundedRectangle(70, float64(70+titlecardh+40+basiccardh+40), float64(cardw), float64(basiccardh), 16)
441+
shadow.DrawRoundedRectangle(70, float64(70+titlecardh+40+basiccardh+40), float64(cardw), float64(diskcardh), 16)
434442
shadow.Stroke()
435443
shadow.DrawRoundedRectangle(70, float64(70+titlecardh+40+basiccardh+40+diskcardh+40), float64(cardw), float64(moreinfocardh), 16)
436444
shadow.Stroke()

0 commit comments

Comments
 (0)