@@ -145,6 +145,10 @@ pub mod wl_display {
145
145
let backend = conn. backend ( ) . downgrade ( ) ;
146
146
Ok ( WlDisplay { id, data, version, backend } )
147
147
}
148
+ #[ inline]
149
+ fn inert ( backend : WeakBackend ) -> Self {
150
+ WlDisplay { id : ObjectId :: null ( ) , data : None , version : 0 , backend }
151
+ }
148
152
fn parse_event (
149
153
conn : & Connection ,
150
154
msg : Message < ObjectId > ,
@@ -219,14 +223,12 @@ pub mod wl_display {
219
223
& self ,
220
224
qh : & QueueHandle < D > ,
221
225
udata : U ,
222
- ) -> Result < super :: wl_callback:: WlCallback , InvalidId > {
223
- let conn = Connection :: from_backend ( self . backend . upgrade ( ) . ok_or ( InvalidId ) ?) ;
224
- let ret = conn. send_request (
225
- self ,
226
+ ) -> super :: wl_callback:: WlCallback {
227
+ self . send_constructor (
226
228
Request :: Sync { } ,
227
- Some ( qh. make_data :: < super :: wl_callback:: WlCallback , U > ( udata) ) ,
228
- ) ? ;
229
- Proxy :: from_id ( & conn , ret )
229
+ qh. make_data :: < super :: wl_callback:: WlCallback , U > ( udata) ,
230
+ )
231
+ . unwrap_or_else ( |_| Proxy :: inert ( self . backend . clone ( ) ) )
230
232
}
231
233
#[ doc = "get global registry object\n \n This request creates a registry object that allows the client\n to list and bind the global objects available from the\n compositor.\n \n It should be noted that the server side resources consumed in\n response to a get_registry request can only be released when the\n client disconnects, not when the client side proxy is destroyed.\n Therefore, clients should invoke get_registry as infrequently as\n possible to avoid wasting memory." ]
232
234
#[ allow( clippy:: too_many_arguments) ]
@@ -237,14 +239,12 @@ pub mod wl_display {
237
239
& self ,
238
240
qh : & QueueHandle < D > ,
239
241
udata : U ,
240
- ) -> Result < super :: wl_registry:: WlRegistry , InvalidId > {
241
- let conn = Connection :: from_backend ( self . backend . upgrade ( ) . ok_or ( InvalidId ) ?) ;
242
- let ret = conn. send_request (
243
- self ,
242
+ ) -> super :: wl_registry:: WlRegistry {
243
+ self . send_constructor (
244
244
Request :: GetRegistry { } ,
245
- Some ( qh. make_data :: < super :: wl_registry:: WlRegistry , U > ( udata) ) ,
246
- ) ? ;
247
- Proxy :: from_id ( & conn , ret )
245
+ qh. make_data :: < super :: wl_registry:: WlRegistry , U > ( udata) ,
246
+ )
247
+ . unwrap_or_else ( |_| Proxy :: inert ( self . backend . clone ( ) ) )
248
248
}
249
249
}
250
250
}
@@ -363,6 +363,10 @@ pub mod wl_registry {
363
363
let backend = conn. backend ( ) . downgrade ( ) ;
364
364
Ok ( WlRegistry { id, data, version, backend } )
365
365
}
366
+ #[ inline]
367
+ fn inert ( backend : WeakBackend ) -> Self {
368
+ WlRegistry { id : ObjectId :: null ( ) , data : None , version : 0 , backend }
369
+ }
366
370
fn parse_event (
367
371
conn : & Connection ,
368
372
msg : Message < ObjectId > ,
@@ -429,14 +433,12 @@ pub mod wl_registry {
429
433
version : u32 ,
430
434
qh : & QueueHandle < D > ,
431
435
udata : U ,
432
- ) -> Result < I , InvalidId > {
433
- let conn = Connection :: from_backend ( self . backend . upgrade ( ) . ok_or ( InvalidId ) ?) ;
434
- let ret = conn. send_request (
435
- self ,
436
+ ) -> I {
437
+ self . send_constructor (
436
438
Request :: Bind { name, id : ( I :: interface ( ) , version) } ,
437
- Some ( qh. make_data :: < I , U > ( udata) ) ,
438
- ) ? ;
439
- Proxy :: from_id ( & conn , ret )
439
+ qh. make_data :: < I , U > ( udata) ,
440
+ )
441
+ . unwrap_or_else ( |_| Proxy :: inert ( self . backend . clone ( ) ) )
440
442
}
441
443
}
442
444
}
@@ -530,6 +532,10 @@ pub mod wl_callback {
530
532
let backend = conn. backend ( ) . downgrade ( ) ;
531
533
Ok ( WlCallback { id, data, version, backend } )
532
534
}
535
+ #[ inline]
536
+ fn inert ( backend : WeakBackend ) -> Self {
537
+ WlCallback { id : ObjectId :: null ( ) , data : None , version : 0 , backend }
538
+ }
533
539
fn parse_event (
534
540
conn : & Connection ,
535
541
msg : Message < ObjectId > ,
@@ -726,6 +732,10 @@ pub mod test_global {
726
732
let backend = conn. backend ( ) . downgrade ( ) ;
727
733
Ok ( TestGlobal { id, data, version, backend } )
728
734
}
735
+ #[ inline]
736
+ fn inert ( backend : WeakBackend ) -> Self {
737
+ TestGlobal { id : ObjectId :: null ( ) , data : None , version : 0 , backend }
738
+ }
729
739
fn parse_event (
730
740
conn : & Connection ,
731
741
msg : Message < ObjectId > ,
@@ -954,14 +964,12 @@ pub mod test_global {
954
964
& self ,
955
965
qh : & QueueHandle < D > ,
956
966
udata : U ,
957
- ) -> Result < super :: secondary:: Secondary , InvalidId > {
958
- let conn = Connection :: from_backend ( self . backend . upgrade ( ) . ok_or ( InvalidId ) ?) ;
959
- let ret = conn. send_request (
960
- self ,
967
+ ) -> super :: secondary:: Secondary {
968
+ self . send_constructor (
961
969
Request :: GetSecondary { } ,
962
- Some ( qh. make_data :: < super :: secondary:: Secondary , U > ( udata) ) ,
963
- ) ? ;
964
- Proxy :: from_id ( & conn , ret )
970
+ qh. make_data :: < super :: secondary:: Secondary , U > ( udata) ,
971
+ )
972
+ . unwrap_or_else ( |_| Proxy :: inert ( self . backend . clone ( ) ) )
965
973
}
966
974
#[ allow( clippy:: too_many_arguments) ]
967
975
pub fn get_tertiary <
@@ -971,14 +979,12 @@ pub mod test_global {
971
979
& self ,
972
980
qh : & QueueHandle < D > ,
973
981
udata : U ,
974
- ) -> Result < super :: tertiary:: Tertiary , InvalidId > {
975
- let conn = Connection :: from_backend ( self . backend . upgrade ( ) . ok_or ( InvalidId ) ?) ;
976
- let ret = conn. send_request (
977
- self ,
982
+ ) -> super :: tertiary:: Tertiary {
983
+ self . send_constructor (
978
984
Request :: GetTertiary { } ,
979
- Some ( qh. make_data :: < super :: tertiary:: Tertiary , U > ( udata) ) ,
980
- ) ? ;
981
- Proxy :: from_id ( & conn , ret )
985
+ qh. make_data :: < super :: tertiary:: Tertiary , U > ( udata) ,
986
+ )
987
+ . unwrap_or_else ( |_| Proxy :: inert ( self . backend . clone ( ) ) )
982
988
}
983
989
#[ doc = "link a secondary and a tertiary" ]
984
990
#[ allow( clippy:: too_many_arguments) ]
@@ -1037,14 +1043,12 @@ pub mod test_global {
1037
1043
ter : & super :: tertiary:: Tertiary ,
1038
1044
qh : & QueueHandle < D > ,
1039
1045
udata : U ,
1040
- ) -> Result < super :: quad:: Quad , InvalidId > {
1041
- let conn = Connection :: from_backend ( self . backend . upgrade ( ) . ok_or ( InvalidId ) ?) ;
1042
- let ret = conn. send_request (
1043
- self ,
1046
+ ) -> super :: quad:: Quad {
1047
+ self . send_constructor (
1044
1048
Request :: NewidAndAllowNull { sec : sec. cloned ( ) , ter : ter. clone ( ) } ,
1045
- Some ( qh. make_data :: < super :: quad:: Quad , U > ( udata) ) ,
1046
- ) ? ;
1047
- Proxy :: from_id ( & conn , ret )
1049
+ qh. make_data :: < super :: quad:: Quad , U > ( udata) ,
1050
+ )
1051
+ . unwrap_or_else ( |_| Proxy :: inert ( self . backend . clone ( ) ) )
1048
1052
}
1049
1053
}
1050
1054
}
@@ -1134,6 +1138,10 @@ pub mod secondary {
1134
1138
let backend = conn. backend ( ) . downgrade ( ) ;
1135
1139
Ok ( Secondary { id, data, version, backend } )
1136
1140
}
1141
+ #[ inline]
1142
+ fn inert ( backend : WeakBackend ) -> Self {
1143
+ Secondary { id : ObjectId :: null ( ) , data : None , version : 0 , backend }
1144
+ }
1137
1145
fn parse_event (
1138
1146
conn : & Connection ,
1139
1147
msg : Message < ObjectId > ,
@@ -1255,6 +1263,10 @@ pub mod tertiary {
1255
1263
let backend = conn. backend ( ) . downgrade ( ) ;
1256
1264
Ok ( Tertiary { id, data, version, backend } )
1257
1265
}
1266
+ #[ inline]
1267
+ fn inert ( backend : WeakBackend ) -> Self {
1268
+ Tertiary { id : ObjectId :: null ( ) , data : None , version : 0 , backend }
1269
+ }
1258
1270
fn parse_event (
1259
1271
conn : & Connection ,
1260
1272
msg : Message < ObjectId > ,
@@ -1376,6 +1388,10 @@ pub mod quad {
1376
1388
let backend = conn. backend ( ) . downgrade ( ) ;
1377
1389
Ok ( Quad { id, data, version, backend } )
1378
1390
}
1391
+ #[ inline]
1392
+ fn inert ( backend : WeakBackend ) -> Self {
1393
+ Quad { id : ObjectId :: null ( ) , data : None , version : 0 , backend }
1394
+ }
1379
1395
fn parse_event (
1380
1396
conn : & Connection ,
1381
1397
msg : Message < ObjectId > ,
0 commit comments