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