@@ -10,8 +10,6 @@ use std::hash::Hasher;
10
10
use std:: io:: Read ;
11
11
use std:: io:: Write ;
12
12
use std:: net:: TcpStream ;
13
- use std:: sync:: atomic:: AtomicI32 ;
14
- use std:: sync:: atomic:: Ordering ;
15
13
use std:: sync:: Arc ;
16
14
use std:: sync:: RwLock ;
17
15
@@ -111,19 +109,13 @@ fn draw(host: String, pwd: String) {
111
109
let iw = ( ( ( meta[ 0 ] as u16 ) << 8 ) | meta[ 1 ] as u16 ) as i32 ;
112
110
let ih = ( ( ( meta[ 2 ] as u16 ) << 8 ) | meta[ 3 ] as u16 ) as i32 ;
113
111
114
- let wh = Arc :: new ( ( AtomicI32 :: new ( iw) , AtomicI32 :: new ( ih) ) ) ;
115
-
116
-
117
- // let dlen = (w * h * 3) as usize;
118
-
119
- let work_buf = Arc :: new ( RwLock :: new ( ( 0usize , 0usize , Vec :: < u8 > :: new ( ) ) ) ) ;
112
+ let work_buf = Arc :: new ( RwLock :: new ( vec ! [ 0u8 ; ( iw * ih * 3 ) as _] ) ) ;
120
113
let draw_work_buf = work_buf. clone ( ) ;
121
114
let mut hooked = false ;
122
115
let mut bmap = bitmap:: Bitmap :: new ( ) ;
123
116
let mut cmd_buf = [ 0u8 ; 5 ] ;
124
- let wh1 = wh. clone ( ) ;
125
117
frame. handle ( move |f, ev| {
126
- let ( w, h) = ( wh1 . 0 . load ( Ordering :: Relaxed ) , wh1 . 1 . load ( Ordering :: Relaxed ) ) ;
118
+ let ( w, h) = ( iw , ih ) ;
127
119
match ev {
128
120
Event :: Enter => {
129
121
// 进入窗口
@@ -223,7 +215,7 @@ fn draw(host: String, pwd: String) {
223
215
if let Ok ( p) = draw_work_buf. read ( ) {
224
216
unsafe {
225
217
if let Ok ( mut image) =
226
- image:: RgbImage :: from_data2 ( & p. 2 , p . 0 as _ , p . 1 as _ , enums:: ColorDepth :: Rgb8 as i32 , 0 )
218
+ image:: RgbImage :: from_data2 ( & p, iw as _ , ih as _ , enums:: ColorDepth :: Rgb8 as i32 , 0 )
227
219
{
228
220
image. scale ( frame. width ( ) , frame. height ( ) , false , true ) ;
229
221
image. draw ( frame. x ( ) , frame. y ( ) , frame. width ( ) , frame. height ( ) ) ;
@@ -265,12 +257,7 @@ fn draw(host: String, pwd: String) {
265
257
for ele in pkgs {
266
258
let ( y, u, v) = ele. data ( ) ;
267
259
if let Ok ( mut p) = work_buf. write ( ) {
268
- p. 0 = ele. width ( ) ;
269
- p. 1 = ele. height ( ) ;
270
- wh. 0 . store ( ele. width ( ) as _ , Ordering :: Relaxed ) ;
271
- wh. 1 . store ( ele. height ( ) as _ , Ordering :: Relaxed ) ;
272
- p. 2 . resize ( ele. width ( ) * ele. height ( ) * 3 , 0u8 ) ;
273
- dscom:: convert:: i420_to_rgb ( ele. width ( ) , ele. height ( ) , y, u, v, & mut p. 2 ) ;
260
+ dscom:: convert:: i420_to_rgb ( ele. width ( ) , ele. height ( ) , y, u, v, & mut p, iw as _ , ih as _ ) ;
274
261
}
275
262
tx. send ( Msg :: Draw ) ;
276
263
}
0 commit comments