func MakeSurface(surf *sdl.Surface) *Surface { surf.Lock() // Get Lock before creating the surface slice. surface := &Surface{surf, nil} sliceHeader := (*reflect.SliceHeader)((unsafe.Pointer(&surface.pixels))) sliceHeader.Cap = int(surf.H * surf.W) sliceHeader.Len = int(surf.H * surf.W) sliceHeader.Data = uintptr(unsafe.Pointer(surf.Pixels)) surf.Unlock() return surface }