VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/VBoxClient/VBoxClient.h@ 59083

Last change on this file since 59083 was 58993, checked in by vboxsync, 9 years ago

bugref:8153: vboxvideo: ABI issues / software rendering on Linux guests: add a new service to VBoxClient to test whether accelerated 3D pass-through is currently available by trying to connect to the HGCM service and signalling success or failure in the process exit code. Add generic HGCM connect and disconnect functionality to VBoxGuestR3Lib to support this. Add the concept of non-daemon services to VBoxClient as we do not need to daemonise or create a pid-file for this quick test.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.8 KB
Line 
1/* $Id: VBoxClient.h 58993 2015-12-04 16:26:50Z vboxsync $ */
2/** @file
3 *
4 * VirtualBox additions user session daemon.
5 */
6
7/*
8 * Copyright (C) 2006-2011 Oracle Corporation
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License (GPL) as published by the Free Software
14 * Foundation, in version 2 as it comes in the "COPYING" file of the
15 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17 */
18
19#ifndef ___vboxclient_vboxclient_h
20# define ___vboxclient_vboxclient_h
21
22#include <VBox/log.h>
23#include <iprt/cpp/utils.h>
24#include <iprt/string.h>
25
26/** Exit with a fatal error. */
27#define VBClFatalError(format) \
28do { \
29 char *pszMessage = RTStrAPrintf2 format; \
30 LogRel(format); \
31 vbclFatalError(pszMessage); \
32} while(0)
33
34/** Exit with a fatal error. */
35extern DECLNORETURN(void) vbclFatalError(char *pszMessage);
36
37/** Call clean-up for the current service and exit. */
38extern void VBClCleanUp();
39
40/** A simple interface describing a service. VBoxClient will run exactly one
41 * service per invocation. */
42struct VBCLSERVICE
43{
44 /** Get the services default path to pidfile, relative to $HOME */
45 /** @todo Should this also have a component relative to the X server number?
46 */
47 const char *(*getPidFilePath)(void);
48 /** Special initialisation, if needed. @a pause and @a resume are
49 * guaranteed not to be called until after this returns. */
50 int (*init)(struct VBCLSERVICE **ppInterface);
51 /** Run the service main loop */
52 int (*run)(struct VBCLSERVICE **ppInterface, bool fDaemonised);
53 /** Clean up any global resources before we shut down hard. The last calls
54 * to @a pause and @a resume are guaranteed to finish before this is called.
55 */
56 void (*cleanup)(struct VBCLSERVICE **ppInterface);
57};
58
59/** Default handler for various struct VBCLSERVICE member functions. */
60static int VBClServiceDefaultHandler(struct VBCLSERVICE **pSelf)
61{
62 return VINF_SUCCESS;
63}
64
65/** Default handler for the struct VBCLSERVICE clean-up member function.
66 * Usually used because the service is cleaned up automatically when the user
67 * process/X11 exits. */
68static void VBClServiceDefaultCleanup(struct VBCLSERVICE **ppInterface)
69{
70 NOREF(ppInterface);
71}
72
73extern struct VBCLSERVICE **VBClGetClipboardService();
74extern struct VBCLSERVICE **VBClGetSeamlessService();
75extern struct VBCLSERVICE **VBClGetDisplayService();
76extern struct VBCLSERVICE **VBClGetHostVersionService();
77#ifdef VBOX_WITH_DRAG_AND_DROP
78extern struct VBCLSERVICE **VBClGetDragAndDropService();
79#endif /* VBOX_WITH_DRAG_AND_DROP */
80extern struct VBCLSERVICE **VBClCheck3DService();
81
82#endif /* !___vboxclient_vboxclient_h */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette