This commit is contained in:
laodaming 2023-11-23 11:14:16 +08:00
parent 53f63d8207
commit f86c687bd8
2 changed files with 24 additions and 15 deletions

View File

@ -37,6 +37,7 @@ type extendRenderProperty struct {
renderCtx context.Context //渲染控制上下文(用于切换模板标签/颜色/logo取消之前发送的不相同的任务 renderCtx context.Context //渲染控制上下文(用于切换模板标签/颜色/logo取消之前发送的不相同的任务
renderCtxCancelFunc context.CancelFunc //渲染控制上下文取消方法 renderCtxCancelFunc context.CancelFunc //渲染控制上下文取消方法
selectColorIndex int //选择的颜色索引(用于标记连接当前连接选择的颜色) selectColorIndex int //选择的颜色索引(用于标记连接当前连接选择的颜色)
templateTag string //模板标签 (用于标记连接当前连接选择的模板标签)
Logo string //logo地址 用于标记连接当前连接选择的logo Logo string //logo地址 用于标记连接当前连接选择的logo
} }
@ -51,6 +52,9 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) {
} }
//颜色/模板标签/logo变更 //颜色/模板标签/logo变更
ifCancelOldCtx := false ifCancelOldCtx := false
if renderImageData.RenderData.TemplateTag != w.extendRenderProperty.templateTag {
ifCancelOldCtx = true
}
if renderImageData.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex { if renderImageData.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex {
ifCancelOldCtx = true ifCancelOldCtx = true
} }
@ -59,6 +63,7 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) {
} }
if ifCancelOldCtx { if ifCancelOldCtx {
//赋值新的 //赋值新的
w.extendRenderProperty.templateTag = renderImageData.RenderData.TemplateTag
w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex
w.extendRenderProperty.Logo = renderImageData.RenderData.Logo w.extendRenderProperty.Logo = renderImageData.RenderData.Logo
//让之前的失效 //让之前的失效
@ -110,6 +115,8 @@ func (w *wsConnectItem) consumeRenderImageData() {
defer func() { defer func() {
<-limitChan <-limitChan
}() }()
//如果不是无视上下文切换取消的(后面再开启)
/*if !d.IgnoreContextCancel {
go func() { go func() {
defer func() { defer func() {
if err := recover(); err != nil { if err := recover(); err != nil {
@ -124,6 +131,7 @@ func (w *wsConnectItem) consumeRenderImageData() {
return return
} }
}() }()
}*/
w.renderImage(d) w.renderImage(d)
}(data) }(data)
} }
@ -376,7 +384,7 @@ func (w *wsConnectItem) assembleRenderDataToUnity(taskId string, resolution int,
return err return err
} }
} }
//组装data数据(参照以前PHP,不要随便动) //组装data数据
var mode map[string]interface{} var mode map[string]interface{}
if element.Mode != nil && *element.Mode != "" { if element.Mode != nil && *element.Mode != "" {
if err = json.Unmarshal([]byte(*element.Mode), &mode); err != nil { if err = json.Unmarshal([]byte(*element.Mode), &mode); err != nil {

View File

@ -3,6 +3,7 @@ package websocket_data
// websocket接受要云渲染处理的数据 // websocket接受要云渲染处理的数据
type RenderImageReqMsg struct { type RenderImageReqMsg struct {
RequestId string `json:"request_id"` RequestId string `json:"request_id"`
IgnoreContextCancel bool `json:"ignore_context_cancel"` //是否无视切换上下文取消正在执行的渲染任务
RenderData RenderData `json:"render_data"` //渲染主要参数 RenderData RenderData `json:"render_data"` //渲染主要参数
} }
type RenderData struct { type RenderData struct {