Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5d758be

Browse files
authored
Merge pull request#113 from dvc94ch/texture-registry
Fix texture registry
2 parents0996e59 +9eb89e7 commit5d758be

File tree

17 files changed

+613
-497
lines changed

17 files changed

+613
-497
lines changed

‎.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ jobs:
2121
host:macos-latest
2222
cross:false
2323

24-
-target:x86_64-pc-windows-msvc
25-
host:windows-latest
26-
cross:false
24+
#- target: x86_64-pc-windows-msvc
25+
# host: windows-latest
26+
# cross: false
2727

2828
-target:armv7-linux-androideabi
2929
host:ubuntu-latest

‎Cargo.lock

Lines changed: 46 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎flutter-engine/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ license = "MIT"
1111
[dependencies]
1212
flutter-engine-sys = {path ="../flutter-engine-sys" }
1313
gl = {version ="0.14.0",optional =true }
14+
image = {version ="0.22.4",optional =true,default_features =false }
1415
log ="0.4.8"
1516
parking_lot ="0.10.0"
1617
priority-queue ="0.7.0"
1718
serde = {version ="1.0.104",features = ["derive"] }
1819
serde_json ="1.0.44"
1920

2021
[features]
21-
texture-registry = ["gl"]
22+
gl-helpers = ["gl","image"]
File renamed without changes.
File renamed without changes.

‎flutter-engine/src/codec/value.rsrenamed to ‎flutter-engine/src/codec/value/mod.rs

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
use std::{
2-
collections::HashMap,
3-
convert::{TryFrom,TryInto},
4-
};
1+
use std::collections::HashMap;
2+
use std::convert::{TryFrom,TryInto};
53

64
use serde::{de, ser,Deserialize,Serialize};
75

86
pubuseself::deserializer::{from_value,Deserializer};
97

108
mod deserializer;
119

12-
#[derive(Debug,Clone,PartialEq)]
10+
#[derive(Clone,Debug,PartialEq)]
1311
pubenumValue{
1412
Null,
1513
Boolean(bool),
@@ -25,8 +23,6 @@ pub enum Value {
2523
Map(HashMap<String,Value>),
2624
}
2725

28-
implEqforValue{}
29-
3026
implSerializeforValue{
3127
#[inline]
3228
fnserialize<S>(&self,serializer:S) ->Result<S::Ok,S::Error>
@@ -158,10 +154,33 @@ impl<'de> Deserialize<'de> for Value {
158154
}
159155
}
160156

157+
#[derive(Debug)]
158+
pubenumError{
159+
Json(serde_json::Error),
160+
NumberOutOfRange,
161+
}
162+
163+
impl std::fmt::DisplayforError{
164+
fnfmt(&self,f:&mut std::fmt::Formatter) -> std::fmt::Result{
165+
matchself{
166+
Self::Json(error) => error.fmt(f),
167+
Self::NumberOutOfRange =>write!(f,"Number is out of range."),
168+
}
169+
}
170+
}
171+
172+
impl std::error::ErrorforError{}
173+
174+
implFrom<serde_json::Error>forError{
175+
fnfrom(error: serde_json::Error) ->Self{
176+
Self::Json(error)
177+
}
178+
}
179+
161180
implTryFrom<serde_json::Value>forValue{
162-
typeError =();
181+
typeError =Error;
163182

164-
fntry_from(value: serde_json::Value) ->Result<Self,Self::Error>{
183+
fntry_from(value: serde_json::Value) ->Result<Self,Error>{
165184
match value{
166185
serde_json::Value::Null =>Ok(Value::Null),
167186
serde_json::Value::Bool(b) =>Ok(Value::Boolean(b)),
@@ -172,7 +191,7 @@ impl TryFrom<serde_json::Value> for Value {
172191
}elseifletSome(f) = num.as_f64(){
173192
Ok(Value::F64(f))
174193
}else{
175-
Err(())
194+
Err(Error::NumberOutOfRange)
176195
}
177196
}
178197
serde_json::Value::Array(vec) =>Ok(Value::List({
@@ -192,3 +211,7 @@ impl TryFrom<serde_json::Value> for Value {
192211
}
193212
}
194213
}
214+
215+
pubfnto_value<T:Serialize>(value:T) ->Result<Value,Error>{
216+
serde_json::to_value(value)?.try_into()
217+
}

‎flutter-engine/src/ffi.rs

Lines changed: 2 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
use flutter_engine_sys::{
2-
FlutterOpenGLTexture,FlutterPlatformMessage,FlutterPlatformMessageResponseHandle,
3-
};
4-
use log::{error, trace};
1+
use flutter_engine_sys::{FlutterPlatformMessage,FlutterPlatformMessageResponseHandle};
2+
use log::error;
53
use std::borrow::Cow;
64
use std::ffi::{CStr,CString};
7-
use std::os::raw::c_void;
85
use std::{mem, ptr};
96

107
#[derive(Debug)]
@@ -174,78 +171,3 @@ impl From<FlutterPointerMouseButtons> for flutter_engine_sys::FlutterPointerMous
174171
}
175172
}
176173
}
177-
178-
#[derive(Debug)]
179-
pubstructExternalTexture{
180-
pub(crate)engine_ptr: flutter_engine_sys::FlutterEngine,
181-
pubtexture_id:i64,
182-
}
183-
184-
unsafeimplSendforExternalTexture{}
185-
unsafeimplSyncforExternalTexture{}
186-
187-
implDropforExternalTexture{
188-
fndrop(&mutself){
189-
trace!("dropping external texture id {}",self.texture_id);
190-
unsafe{
191-
flutter_engine_sys::FlutterEngineUnregisterExternalTexture(
192-
self.engine_ptr,
193-
self.texture_id,
194-
);
195-
}
196-
}
197-
}
198-
199-
implExternalTexture{
200-
pubfnmark_frame_available(&self){
201-
unsafe{
202-
flutter_engine_sys::FlutterEngineMarkExternalTextureFrameAvailable(
203-
self.engine_ptr,
204-
self.texture_id,
205-
);
206-
}
207-
}
208-
}
209-
210-
typeDestructorType =Box<dynFnOnce()>;
211-
212-
pubstructExternalTextureFrame{
213-
pubtarget:u32,
214-
pubname:u32,
215-
pubformat:u32,
216-
pubdestruction_callback:Box<DestructorType>,
217-
}
218-
219-
implExternalTextureFrame{
220-
pubfnnew<F>(
221-
target:u32,
222-
name:u32,
223-
format:u32,
224-
destruction_callback:F,
225-
) ->ExternalTextureFrame
226-
where
227-
F:FnOnce() ->() +'static +Send,
228-
{
229-
ExternalTextureFrame{
230-
target,
231-
name,
232-
format,
233-
destruction_callback:Box::new(Box::new(destruction_callback)),
234-
}
235-
}
236-
237-
pub(crate)fninto_ffi(self,target:&mutFlutterOpenGLTexture){
238-
target.target =self.target;
239-
target.name =self.name;
240-
target.format =self.format;
241-
target.destruction_callback =Some(texture_destruction_callback);
242-
target.user_data =Box::into_raw(self.destruction_callback)as_;
243-
}
244-
}
245-
246-
unsafeextern"C"fntexture_destruction_callback(user_data:*mutc_void){
247-
trace!("texture_destruction_callback");
248-
let user_data = user_dataas*mutDestructorType;
249-
let user_data =Box::from_raw(user_data);
250-
user_data();
251-
}

‎flutter-engine/src/flutter_callbacks.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,13 @@ pub extern "C" fn gl_external_texture_frame(
129129
) ->bool{
130130
trace!("gl_external_texture_frame");
131131
unsafe{
132-
ifletSome(handler) =get_handler(user_data){
133-
ifletSome(frame) = handler.get_texture_frame(texture_id,(width, height)){
134-
frame.into_ffi(&mut*texture);
135-
returntrue;
136-
}
132+
let engine =&*(user_dataas*constFlutterEngineInner);
133+
ifletSome(frame) = engine
134+
.texture_registry
135+
.get_texture_frame(texture_id,(width, height))
136+
{
137+
frame.into_ffi(&mut*texture);
138+
returntrue;
137139
}
138140
false
139141
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp