• Mike Gabriel's avatar
    Clear header file namespace separation (<X11/...> vs. <nx-X11/...>). · 433d8186
    Mike Gabriel authored
     In the process of building nxagent against more and more system-wide installed
     X.org libraries, we come to the limit of including structs from this (bundled
     nx-X11) and that (system-wide X.Org) library.
    
     This commit introduces a clear namespace separation of headers provided by
     nx-X11 and headers provided by X.Org. This approach is only temporary as we
     want to drop all nx-X11 bundled libraries from nx-libs.
    
     However, for a while we need to make this separation clear and also ship
     some reduced fake X.Org headers that avoid pulling in libX* and libNX_X*
     symbols at the same time.
    
     This patch has been tested on Debian jessie and unstable and requires no
     overall testing on various distros and distro versions, as we finally will
     drop all libNX_X* libraries and build against X.org's client libs.
    
     For now, this hack eases our development / cleanup process.
    433d8186
Manager.h 2.6 KB
/**************************************************************************/
/*                                                                        */
/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/.         */
/*                                                                        */
/* NXCOMPSHAD, NX protocol compression and NX extensions to this software */
/* are copyright of NoMachine. Redistribution and use of the present      */
/* software is allowed according to terms specified in the file LICENSE   */
/* which comes in the source distribution.                                */
/*                                                                        */
/* Check http://www.nomachine.com/licensing.html for applicability.       */
/*                                                                        */
/* NX and NoMachine are trademarks of Medialogic S.p.A.                   */
/*                                                                        */
/* All rights reserved.                                                   */
/*                                                                        */
/**************************************************************************/

#ifndef UpdateManager_H
#define UpdateManager_H

#include <nx-X11/Xlib.h>

#include "Updater.h"
#include "Regions.h"
#include "Input.h"

typedef char* UpdaterHandle;

class UpdateManager
{
  public:

  UpdateManager(int, int, char *, Input *);

  ~UpdateManager();

  void handleInput();

  void addRegion(Region);

  void update();

  UpdaterHandle addUpdater(char *displayName, Display *display);

  int removeUpdater(UpdaterHandle);

  int removeAllUpdaters();

  int numberOfUpdaters();

  int getWidth();

  int getHeight();

  char *getBuffer();

  Region getUpdateManagerRegion();

  void destroyUpdateManagerRegion();

  void newRegion();

  private:

  Updater *createUpdater(char *displayName, Display *display);

  int width_;
  int height_;
  char *frameBuffer_;
  Input *input_;

  int nUpdater;

  Updater **updaterVector;

  Region updateManagerRegion_;

};

inline int UpdateManager::numberOfUpdaters()
{
  return nUpdater;
}

inline int UpdateManager::getWidth()
{
  return width_;
}

inline int UpdateManager::getHeight()
{
  return height_;
}

inline char *UpdateManager::getBuffer()
{
  return frameBuffer_;
}

inline Region UpdateManager::getUpdateManagerRegion()
{
  return updateManagerRegion_;
}

inline void UpdateManager::destroyUpdateManagerRegion()
{
  if (updateManagerRegion_ != NULL)
  {
    XDestroyRegion(updateManagerRegion_);

    updateManagerRegion_ = NULL;
  }
}

#endif /* UpdateManager_H */