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 _rfbScreenInfo

this 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_void

some 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: i32

If rfbAuthPasswdData is given a list, this is the first view only password.

§maxRectsPerUpdate: i32

send only this many rectangles in one update

§deferUpdateTime: i32

this is the amount of milliseconds to wait at least before sending an update.

§alwaysShared: i8§neverShared: i8§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 i8

the 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: i8

if TRUE, an ignoring signal handler is installed for SIGPIPE

§progressiveSliceHeight: i32

if 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: i8

handle as many input events as possible (default off)

§versionString: *mut i8

rfbEncodingServerIdentity

§protocolMajorVersion: i32

What does the server tell the new clients which version it supports

§protocolMinorVersion: i32§permitFileTransfer: i8

command 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: f32

This 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.