@@ -77,11 +77,11 @@ pub(crate) fn init_graphics_device() {
77
77
#[ derive( Debug , Default ) ]
78
78
#[ allow( non_snake_case) ]
79
79
struct DeviceCallbacks {
80
- pub activate : Cell < Option < unsafe extern "C" fn ( pDevDesc ) > > ,
81
- pub deactivate : Cell < Option < unsafe extern "C" fn ( pDevDesc ) > > ,
82
- pub holdflush : Cell < Option < unsafe extern "C" fn ( pDevDesc , i32 ) -> i32 > > ,
83
- pub mode : Cell < Option < unsafe extern "C" fn ( i32 , pDevDesc ) > > ,
84
- pub newPage : Cell < Option < unsafe extern "C" fn ( pGEcontext , pDevDesc ) > > ,
80
+ pub activate : Cell < Option < unsafe extern "C-unwind " fn ( pDevDesc ) > > ,
81
+ pub deactivate : Cell < Option < unsafe extern "C-unwind " fn ( pDevDesc ) > > ,
82
+ pub holdflush : Cell < Option < unsafe extern "C-unwind " fn ( pDevDesc , i32 ) -> i32 > > ,
83
+ pub mode : Cell < Option < unsafe extern "C-unwind " fn ( i32 , pDevDesc ) > > ,
84
+ pub newPage : Cell < Option < unsafe extern "C-unwind " fn ( pGEcontext , pDevDesc ) > > ,
85
85
}
86
86
87
87
#[ derive( Default ) ]
@@ -473,7 +473,7 @@ pub unsafe fn on_did_execute_request(
473
473
474
474
// NOTE: May be called when rendering a plot to file, since this is done by
475
475
// copying the graphics display list to a new plot device, and then closing that device.
476
- unsafe extern "C" fn gd_activate ( dev : pDevDesc ) {
476
+ unsafe extern "C-unwind " fn gd_activate ( dev : pDevDesc ) {
477
477
log:: trace!( "gd_activate" ) ;
478
478
479
479
DEVICE_CONTEXT . with_borrow ( |cell| {
@@ -485,7 +485,7 @@ unsafe extern "C" fn gd_activate(dev: pDevDesc) {
485
485
486
486
// NOTE: May be called when rendering a plot to file, since this is done by
487
487
// copying the graphics display list to a new plot device, and then closing that device.
488
- unsafe extern "C" fn gd_deactivate ( dev : pDevDesc ) {
488
+ unsafe extern "C-unwind " fn gd_deactivate ( dev : pDevDesc ) {
489
489
log:: trace!( "gd_deactivate" ) ;
490
490
491
491
DEVICE_CONTEXT . with_borrow ( |cell| {
@@ -495,7 +495,7 @@ unsafe extern "C" fn gd_deactivate(dev: pDevDesc) {
495
495
} ) ;
496
496
}
497
497
498
- unsafe extern "C" fn gd_hold_flush ( dev : pDevDesc , mut holdflush : i32 ) -> i32 {
498
+ unsafe extern "C-unwind " fn gd_hold_flush ( dev : pDevDesc , mut holdflush : i32 ) -> i32 {
499
499
log:: trace!( "gd_hold_flush" ) ;
500
500
501
501
DEVICE_CONTEXT . with_borrow ( |cell| {
@@ -511,7 +511,7 @@ unsafe extern "C" fn gd_hold_flush(dev: pDevDesc, mut holdflush: i32) -> i32 {
511
511
// mode = 0, graphics off
512
512
// mode = 1, graphics on
513
513
// mode = 2, graphical input on (ignored by most drivers)
514
- unsafe extern "C" fn gd_mode ( mode : i32 , dev : pDevDesc ) {
514
+ unsafe extern "C-unwind " fn gd_mode ( mode : i32 , dev : pDevDesc ) {
515
515
log:: trace!( "gd_mode: {mode}" ) ;
516
516
517
517
DEVICE_CONTEXT . with_borrow ( |cell| {
@@ -522,7 +522,7 @@ unsafe extern "C" fn gd_mode(mode: i32, dev: pDevDesc) {
522
522
} ) ;
523
523
}
524
524
525
- unsafe extern "C" fn gd_new_page ( dd : pGEcontext , dev : pDevDesc ) {
525
+ unsafe extern "C-unwind " fn gd_new_page ( dd : pGEcontext , dev : pDevDesc ) {
526
526
log:: trace!( "gd_new_page" ) ;
527
527
528
528
DEVICE_CONTEXT . with_borrow ( |cell| {
@@ -590,15 +590,15 @@ unsafe fn ps_graphics_device_impl() -> anyhow::Result<SEXP> {
590
590
}
591
591
592
592
#[ harp:: register]
593
- unsafe extern "C" fn ps_graphics_device ( ) -> anyhow:: Result < SEXP > {
593
+ unsafe extern "C-unwind " fn ps_graphics_device ( ) -> anyhow:: Result < SEXP > {
594
594
ps_graphics_device_impl ( ) . or_else ( |err| {
595
595
log:: error!( "{}" , err) ;
596
596
Ok ( R_NilValue )
597
597
} )
598
598
}
599
599
600
600
#[ harp:: register]
601
- unsafe extern "C" fn ps_graphics_event ( _name : SEXP ) -> anyhow:: Result < SEXP > {
601
+ unsafe extern "C-unwind " fn ps_graphics_event ( _name : SEXP ) -> anyhow:: Result < SEXP > {
602
602
let id = unwrap ! ( DEVICE_CONTEXT . with_borrow( |cell| cell. _id. borrow( ) . clone( ) ) , None => {
603
603
return Ok ( Rf_ScalarLogical ( 0 ) ) ;
604
604
} ) ;
0 commit comments