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

View File

@ -2,8 +2,9 @@ package websocket_data
// websocket接受要云渲染处理的数据
type RenderImageReqMsg struct {
RequestId string `json:"request_id"`
RenderData RenderData `json:"render_data"` //渲染主要参数
RequestId string `json:"request_id"`
IgnoreContextCancel bool `json:"ignore_context_cancel"` //是否无视切换上下文取消正在执行的渲染任务
RenderData RenderData `json:"render_data"` //渲染主要参数
}
type RenderData struct {
TemplateTag string `json:"template_tag"` //模板标签(必须)