15void FreeFinalizer(
void* isolate_callback_data,
void* peer) {
31 void* buf = ::malloc(
length);
34 return Dart_NewExternalTypedDataWithFinalizer(
35 Dart_TypedData_kByteData, buf,
length, buf,
length, FreeFinalizer);
40 : data_(nullptr), length_in_bytes_(0), dart_handle_(nullptr) {}
45 dart_handle_(Dart_NewTypedData(Dart_TypedData_kByteData,
length)) {
46 if (!Dart_IsError(dart_handle_)) {
47 Dart_TypedData_Type
type;
48 auto acquire_result = Dart_TypedDataAcquireData(dart_handle_, &
type, &data_,
51 if (!Dart_IsError(acquire_result)) {
52 ::memcpy(data_,
data, length_in_bytes_);
58 : data_(nullptr), length_in_bytes_(0), dart_handle_(list) {
59 if (Dart_IsNull(list))
62 Dart_TypedData_Type
type;
63 Dart_TypedDataAcquireData(list, &
type, &data_, &length_in_bytes_);
65 if (
type != Dart_TypedData_kByteData)
66 Dart_ThrowException(
ToDart(
"Non-genuine ByteData passed to engine."));
71 length_in_bytes_(other.length_in_bytes_),
72 dart_handle_(other.dart_handle_) {
73 other.data_ =
nullptr;
74 other.dart_handle_ =
nullptr;
82 const char* ptr =
static_cast<const char*
>(data_);
83 return std::vector<char>(ptr, ptr + length_in_bytes_);
88 Dart_TypedDataReleaseData(dart_handle_);
94 Dart_NativeArguments
args,
96 Dart_Handle& exception) {
97 Dart_Handle data = Dart_GetNativeArgument(
args, index);
Dart_Handle dart_handle() const
static const size_t kExternalSizeThreshold
static Dart_Handle Create(const void *data, size_t length)
const void * data() const
std::vector< char > Copy() const
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
Dart_Handle ToDart(const T &object)
bool CheckAndHandleError(Dart_Handle handle)
impeller::ShaderType type