Type Alias libvnc_sys::rfb::rfbScreenInfo
source · pub type rfbScreenInfo = _rfbScreenInfo;Expand description
Per-screen (framebuffer) structure. There can be as many as you wish, each serving different clients. However, you have to call rfbProcessEvents for each of these.
Aliased Type§
struct rfbScreenInfo {Show 90 fields
pub scaledScreenNext: *mut _rfbScreenInfo,
pub scaledScreenRefCount: i32,
pub width: i32,
pub paddedWidthInBytes: i32,
pub height: i32,
pub depth: i32,
pub bitsPerPixel: i32,
pub sizeInBytes: i32,
pub blackPixel: u32,
pub whitePixel: u32,
pub screenData: *mut c_void,
pub serverFormat: rfbPixelFormat,
pub colourMap: rfbColourMap,
pub desktopName: *const i8,
pub thisHost: [i8; 255],
pub autoPort: i8,
pub port: i32,
pub listenSock: i32,
pub maxSock: i32,
pub maxFd: i32,
pub allFds: fd_set,
pub socketState: u32,
pub inetdSock: i32,
pub inetdInitDone: i8,
pub udpPort: i32,
pub udpSock: i32,
pub udpClient: *mut _rfbClientRec,
pub udpSockConnected: i8,
pub udpRemoteAddr: sockaddr_in,
pub maxClientWait: i32,
pub httpInitDone: i8,
pub httpEnableProxyConnect: i8,
pub httpPort: i32,
pub httpDir: *mut i8,
pub httpListenSock: i32,
pub httpSock: i32,
pub passwordCheck: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: *const i8, _: i32) -> i8>,
pub authPasswdData: *mut c_void,
pub authPasswdFirstViewOnly: i32,
pub maxRectsPerUpdate: i32,
pub deferUpdateTime: i32,
pub alwaysShared: i8,
pub neverShared: i8,
pub dontDisconnect: i8,
pub clientHead: *mut _rfbClientRec,
pub pointerClient: *mut _rfbClientRec,
pub cursorX: i32,
pub cursorY: i32,
pub underCursorBufferLen: i32,
pub underCursorBuffer: *mut i8,
pub dontConvertRichCursorToXCursor: i8,
pub cursor: *mut rfbCursor,
pub frameBuffer: *mut i8,
pub kbdAddEvent: Option<unsafe extern "C" fn(_: i8, _: u32, _: *mut _rfbClientRec)>,
pub kbdReleaseAllKeys: Option<unsafe extern "C" fn(_: *mut _rfbClientRec)>,
pub ptrAddEvent: Option<unsafe extern "C" fn(_: i32, _: i32, _: i32, _: *mut _rfbClientRec)>,
pub setXCutText: Option<unsafe extern "C" fn(_: *mut i8, _: i32, _: *mut _rfbClientRec)>,
pub getCursorPtr: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> *mut rfbCursor>,
pub setTranslateFunction: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> i8>,
pub setSingleWindow: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: i32, _: i32)>,
pub setServerInput: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: i32)>,
pub getFileTransferPermission: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> i32>,
pub setTextChat: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: i32, _: *mut i8)>,
pub newClientHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> u32>,
pub displayHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec)>,
pub getKeyboardLedStateHook: Option<unsafe extern "C" fn(_: *mut _rfbScreenInfo) -> i32>,
pub cursorMutex: pthread_mutex_t,
pub backgroundLoop: i8,
pub ignoreSIGPIPE: i8,
pub progressiveSliceHeight: i32,
pub listenInterface: u32,
pub deferPtrUpdateTime: i32,
pub handleEventsEagerly: i8,
pub versionString: *mut i8,
pub protocolMajorVersion: i32,
pub protocolMinorVersion: i32,
pub permitFileTransfer: i8,
pub displayFinishedHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: i32)>,
pub xvpHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: u8, _: u8) -> i8>,
pub sslkeyfile: *mut i8,
pub sslcertfile: *mut i8,
pub ipv6port: i32,
pub listen6Interface: *mut i8,
pub listen6Sock: i32,
pub http6Port: i32,
pub httpListen6Sock: i32,
pub setDesktopSizeHook: Option<unsafe extern "C" fn(_: i32, _: i32, _: i32, _: *mut rfbExtDesktopScreen, _: *mut _rfbClientRec) -> i32>,
pub numberOfExtDesktopScreensHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> i32>,
pub getExtDesktopScreenHook: Option<unsafe extern "C" fn(_: i32, _: *mut rfbExtDesktopScreen, _: *mut _rfbClientRec) -> i8>,
pub fdQuota: f32,
}Fields§
§scaledScreenNext: *mut _rfbScreenInfothis structure has children that are scaled versions of this screen
scaledScreenRefCount: i32§width: i32§paddedWidthInBytes: i32§height: i32§depth: i32§bitsPerPixel: i32§sizeInBytes: i32§blackPixel: u32§whitePixel: u32§screenData: *mut c_voidsome screen specific data can be put into a struct where screenData points to. You need this if you have more than one screen at the same time while using the same functions.
serverFormat: rfbPixelFormat§colourMap: rfbColourMap< set this if rfbServerFormat.trueColour==FALSE
desktopName: *const i8§thisHost: [i8; 255]§autoPort: i8§port: i32§listenSock: i32§maxSock: i32§maxFd: i32§allFds: fd_set§socketState: u32§inetdSock: i32§inetdInitDone: i8§udpPort: i32§udpSock: i32§udpClient: *mut _rfbClientRec§udpSockConnected: i8§udpRemoteAddr: sockaddr_in§maxClientWait: i32§httpInitDone: i8§httpEnableProxyConnect: i8§httpPort: i32§httpDir: *mut i8§httpListenSock: i32§httpSock: i32§passwordCheck: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: *const i8, _: i32) -> i8>§authPasswdData: *mut c_void§authPasswdFirstViewOnly: i32If rfbAuthPasswdData is given a list, this is the first view only password.
maxRectsPerUpdate: i32send only this many rectangles in one update
deferUpdateTime: i32this is the amount of milliseconds to wait at least before sending an update.
dontDisconnect: i8§clientHead: *mut _rfbClientRec§pointerClient: *mut _rfbClientRec< “Mutex” for pointer events
cursorX: i32§cursorY: i32§underCursorBufferLen: i32§underCursorBuffer: *mut i8§dontConvertRichCursorToXCursor: i8§cursor: *mut rfbCursor§frameBuffer: *mut i8the frameBuffer has to be supplied by the serving process. The buffer will not be freed by
kbdAddEvent: Option<unsafe extern "C" fn(_: i8, _: u32, _: *mut _rfbClientRec)>§kbdReleaseAllKeys: Option<unsafe extern "C" fn(_: *mut _rfbClientRec)>§ptrAddEvent: Option<unsafe extern "C" fn(_: i32, _: i32, _: i32, _: *mut _rfbClientRec)>§setXCutText: Option<unsafe extern "C" fn(_: *mut i8, _: i32, _: *mut _rfbClientRec)>§getCursorPtr: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> *mut rfbCursor>§setTranslateFunction: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> i8>§setSingleWindow: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: i32, _: i32)>§setServerInput: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: i32)>§getFileTransferPermission: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> i32>§setTextChat: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: i32, _: *mut i8)>§newClientHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> u32>newClientHook is called just after a new client is created
displayHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec)>displayHook is called just before a frame buffer update
getKeyboardLedStateHook: Option<unsafe extern "C" fn(_: *mut _rfbScreenInfo) -> i32>These hooks are called to pass keyboard state back to the client
cursorMutex: pthread_mutex_t§backgroundLoop: i8§ignoreSIGPIPE: i8if TRUE, an ignoring signal handler is installed for SIGPIPE
progressiveSliceHeight: i32if not zero, only a slice of this height is processed every time an update should be sent. This should make working on a slow link more interactive.
listenInterface: u32§deferPtrUpdateTime: i32§handleEventsEagerly: i8handle as many input events as possible (default off)
versionString: *mut i8rfbEncodingServerIdentity
protocolMajorVersion: i32What does the server tell the new clients which version it supports
protocolMinorVersion: i32§permitFileTransfer: i8command line authorization of file transfers
displayFinishedHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: i32)>displayFinishedHook is called just after a frame buffer update
xvpHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec, _: u8, _: u8) -> i8>xvpHook is called to handle an xvp client message
sslkeyfile: *mut i8§sslcertfile: *mut i8§ipv6port: i32< The port to listen on when using IPv6.
listen6Interface: *mut i8§listen6Sock: i32§http6Port: i32§httpListen6Sock: i32§setDesktopSizeHook: Option<unsafe extern "C" fn(_: i32, _: i32, _: i32, _: *mut rfbExtDesktopScreen, _: *mut _rfbClientRec) -> i32>hook to let client set resolution
numberOfExtDesktopScreensHook: Option<unsafe extern "C" fn(_: *mut _rfbClientRec) -> i32>Optional hooks to query ExtendedDesktopSize screen information. If not set it is assumed only one screen is present spanning entire fb
getExtDesktopScreenHook: Option<unsafe extern "C" fn(_: i32, _: *mut rfbExtDesktopScreen, _: *mut _rfbClientRec) -> i8>§fdQuota: f32This value between 0 and 1.0 defines which fraction of the maximum number of file descriptors LibVNCServer uses before denying new client connections. It is set to 0.5 per default.