VirtualBox

Ignore:
Timestamp:
Sep 1, 2020 11:35:29 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140171
Message:

bugref:9637. Checking if VBoxDRMClient is running during VBoxClient --vmsvga service

Location:
trunk/src/VBox/Additions/x11/VBoxClient
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/x11/VBoxClient/Makefile.kmk

    r84547 r85976  
    2626#
    2727PROGRAMS += VBoxClient
     28#
     29# Please make sure that you grep the source tree and modify all occurences accordingly
     30# if you rename the following program name.
     31#
    2832PROGRAMS += VBoxDRMClient
    2933
     
    4145VBoxClient_INCS += ../x11include/randrproto-1.6.0
    4246VBoxClient_SOURCES = \
    43         main.cpp \
    44         display-svga-x11.cpp \
    45         seamless.cpp \
    46         seamless-x11.cpp \
    47         logging.cpp \
    48         hostversion.cpp
     47        main.cpp \
     48        display-svga-x11.cpp \
     49        seamless.cpp \
     50        seamless-x11.cpp \
     51        logging.cpp \
     52        hostversion.cpp
    4953
    5054VBoxDRMClient_TEMPLATE = NewVBoxGuestR3Exe
     
    5660
    5761VBoxClient_SOURCES.linux = \
    58         chk_stubs.c
     62        chk_stubs.c
    5963VBoxClient_LIBPATH = \
    60         $(VBOX_LIBPATH32_X11)
     64        $(VBOX_LIBPATH32_X11)
    6165VBoxClient_LIBS.freebsd = \
    62         iconv
     66        iconv
    6367VBoxClient_LIBS.linux = \
    64         dl
     68        dl
    6569VBoxClient_LIBS.netbsd = \
    66         crypt
     70        crypt
    6771VBoxClient_LIBS.solaris = \
    68         dl
     72        dl
    6973VBoxClient_LIBS = \
    70         X11 Xt Xext Xmu
     74        X11 Xt Xext Xmu
    7175ifdef VBOX_WITH_DISTRO_XRAND_XINERAMA
    7276 VBoxClient_DEFS += WITH_DISTRO_XRAND_XINERAMA
     
    7680# XXX: -L comes from the template, but not rpath
    7781VBoxClient_LDFLAGS.netbsd = \
    78         -Wl,-rpath /usr/X11R7/lib
     82        -Wl,-rpath /usr/X11R7/lib
    7983
    8084ifdef VBOX_WITH_DRAG_AND_DROP
     
    8286 VBoxClient_DEFS += VBOX_DND_WITH_XTEST
    8387 VBoxClient_LIBS += \
    84         Xtst
     88        Xtst
    8589 endif
    8690endif
     
    9195ifeq ($(KBUILD_TARGET),linux)
    9296VBoxClient_LDFLAGS.amd64 += \
    93         -Wl,--wrap=memcpy
     97        -Wl,--wrap=memcpy
    9498endif
    9599
     
    100104ifdef VBOX_WITH_DRAG_AND_DROP
    101105VBoxClient_DEFS += \
    102         VBOX_WITH_DRAG_AND_DROP \
    103         $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
     106        VBOX_WITH_DRAG_AND_DROP \
     107        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
    104108VBoxClient_SOURCES += \
    105         draganddrop.cpp
     109        draganddrop.cpp
    106110VBoxClient_LIBS     += \
    107         $(VBOX_LIB_VBGL_R3) \
    108         $(PATH_STAGE_LIB)/additions/VBoxDnDGuestR3Lib$(VBOX_SUFF_LIB)
     111        $(VBOX_LIB_VBGL_R3) \
     112        $(PATH_STAGE_LIB)/additions/VBoxDnDGuestR3Lib$(VBOX_SUFF_LIB)
    109113endif
    110114
    111115ifdef VBOX_WITH_SHARED_CLIPBOARD
    112116 VBoxClient_DEFS += \
    113         VBOX_WITH_SHARED_CLIPBOARD \
    114         $(if $(VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS),VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS,)
     117        VBOX_WITH_SHARED_CLIPBOARD \
     118        $(if $(VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS),VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS,)
    115119 VBoxClient_SOURCES += \
    116         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp \
    117         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp \
    118         clipboard.cpp
     120        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp \
     121        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp \
     122        clipboard.cpp
    119123 ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    120124  VBoxClient_DEFS    += VBOX_WITH_SHARED_CLIPBOARD_GUEST
    121125  VBoxClient_SOURCES += \
    122         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp \
    123         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardPath.cpp
     126        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp \
     127        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardPath.cpp
    124128  ifdef VBOX_WITH_SHARED_CLIPBOARD_FUSE
    125129   VBoxClient_DEFS    += VBOX_WITH_SHARED_CLIPBOARD_FUSE
    126130   # @todo Make this dynamic loading more generic.
    127131   VBoxClient_SOURCES += \
    128         $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount/fuse.cpp \
    129         clipboard-fuse.cpp
     132        $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount/fuse.cpp \
     133        clipboard-fuse.cpp
    130134   # @todo Ditto.
    131135   VBoxClient_INCS    += \
    132         $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount
     136        $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount
    133137  endif
    134138 endif
     
    154158$$(tstSeamlessX11-auto_0_OUTDIR)/tstSeamlessX11-auto.run: \
    155159       $$(tstSeamlessX11-auto_1_STAGE_TARGET)
    156         export VBOX_LOG_DEST=nofile; $(tstSeamlessX11-auto_1_STAGE_TARGET) quiet
    157         $(QUIET)$(APPEND) -t "$@" "done"
     160        export VBOX_LOG_DEST=nofile; $(tstSeamlessX11-auto_1_STAGE_TARGET) quiet
     161        $(QUIET)$(APPEND) -t "$@" "done"
    158162
    159163  #
  • trunk/src/VBox/Additions/x11/VBoxClient/display-svga-x11.cpp

    r85962 r85976  
    5656#include <iprt/err.h>
    5757#include <iprt/file.h>
     58#include <iprt/mem.h>
    5859#include <iprt/path.h>
    5960#include <iprt/string.h>
     
    679680
    680681/**
     682 * An abbreviated copy of the VGSvcReadProp from VBoxServiceUtils.cpp
     683 */
     684static int readGuestProperty(uint32_t u32ClientId, const char *pszPropName)
     685{
     686    AssertPtrReturn(pszPropName, VERR_INVALID_POINTER);
     687
     688    uint32_t    cbBuf = _1K;
     689    void       *pvBuf = NULL;
     690    int         rc    = VINF_SUCCESS;  /* MSC can't figure out the loop */
     691
     692    for (unsigned cTries = 0; cTries < 10; cTries++)
     693    {
     694        /*
     695         * (Re-)Allocate the buffer and try read the property.
     696         */
     697        RTMemFree(pvBuf);
     698        pvBuf = RTMemAlloc(cbBuf);
     699        if (!pvBuf)
     700        {
     701            VBClLogError("Guest Property: Failed to allocate %zu bytes\n", cbBuf);
     702            rc = VERR_NO_MEMORY;
     703            break;
     704        }
     705        char    *pszValue;
     706        char    *pszFlags;
     707        uint64_t uTimestamp;
     708        rc = VbglR3GuestPropRead(u32ClientId, pszPropName, pvBuf, cbBuf, &pszValue, &uTimestamp, &pszFlags, NULL);
     709        if (RT_FAILURE(rc))
     710        {
     711            if (rc == VERR_BUFFER_OVERFLOW)
     712            {
     713                /* try again with a bigger buffer. */
     714                cbBuf *= 2;
     715                continue;
     716            }
     717            else
     718                break;
     719        }
     720        else
     721            break;
     722    }
     723
     724    if (pvBuf)
     725        RTMemFree(pvBuf);
     726    return rc;
     727}
     728
     729/**
    681730 * We start VBoxDRMClient from VBoxService in case  some guest property is set.
    682731 * We check the same guest property here and dont start this service in case
     
    685734static bool checkDRMClient()
    686735{
    687     return false;
    688     // uint32_t uGuestPropSvcClientID;
    689     // int rc = VbglR3GuestPropConnect(&uGuestPropSvcClientID);
    690     // if (RT_SUCCESS(rc))
    691     // {
    692     //     rc = VGSvcCheckPropExist(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/DRMResize");
    693     //     if (RT_SUCCESS(rc))
    694     //         return true;
    695     // }
    696     // return false;
     736   uint32_t uGuestPropSvcClientID;
     737   int rc = VbglR3GuestPropConnect(&uGuestPropSvcClientID);
     738   if (RT_FAILURE(rc))
     739       return false;
     740   rc = readGuestProperty(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/DRMResize" /*pszPropName*/);
     741   if (RT_FAILURE(rc))
     742       return false;
     743   return true;
    697744}
    698745
     
    701748    /* If DRM client is already running don't start this service. */
    702749    if (checkDRMClient())
     750    {
     751        VBClLogFatalError("DRM resizing is already running. Exiting this service\n");
    703752        return false;
     753    }
    704754    if (isXwayland())
    705755    {
Note: See TracChangeset for help on using the changeset viewer.

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