// package wui_ctx -- глобальный контекст графики. package wui_ctx import ( "fmt" "sync" mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0" mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx" mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types" ) var ( wCtx mWt.IWuiCtx block sync.Mutex ) // GetWuiCtx -- возвращает глобальный контекст графики. func GetWuiCtx() *mL0.Result[mWt.IWuiCtx] { block.Lock() defer block.Unlock() if wCtx != nil { return mL0.NewRes(wCtx) } resKernCtx := kctx.GetKernelCtx() if resKernCtx.IsErr() { err := fmt.Errorf("GetWuiCtx(): in get kCtx, err=\n\t%w", resKernCtx.Err()) return mL0.NewErr[mWt.IWuiCtx](err) } kCtx := resKernCtx.Val() resWuiCtx := mL1.NewLocalCtx(kCtx.Ctx()) if resWuiCtx.IsErr() { err := fmt.Errorf("GetWuiCtx(): in new localCtx, err=\n\t%w", resWuiCtx.Err()) return mL0.NewErr[mWt.IWuiCtx](err) } wCtx = resWuiCtx.Val() return mL0.NewRes(wCtx) }