| 123456789101112131415161718192021222324252627282930313233343536373839 |
- // 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)
- }
|