[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdenetwork/krfb
From: George Goldberg <grundleborg () googlemail ! com>
Date: 2009-09-23 20:57:48
Message-ID: 1253739468.284363.11072.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1027330 by gberg:
Framebuffers are now plugins. This means we can switch between the Qt and X11 \
framebuffers at runtime.
- Currently there is no configuration UI, so you have to edit the krfbrc by hand to \
select the framebuffer plugin to use. This will be fixed later.
- Framebuffers are shared, so that when krfb supports having mutliple servers \
running, the framebuffer can be shared between them (when appropriate) for better \
performance.
- Currently defaults to the X11 framebuffer, since this is what was hardcoded before.
M +71 -4 CMakeLists.txt
M +0 -25 framebuffer.cpp
M +7 -5 framebuffer.h
A framebuffermanager.cpp [License: GPL (v2+)]
A framebuffermanager.h [License: GPL (v2+)]
A framebufferplugin.cpp [License: GPL (v2+)]
A framebufferplugin.h [License: GPL (v2+)]
A framebuffers (directory)
A framebuffers/CMakeLists.txt
A framebuffers/qt (directory)
A framebuffers/qt/CMakeLists.txt
A framebuffers/qt/krfb_framebuffer_qt.desktop
A framebuffers/qt/qtframebuffer.cpp [License: GPL (v2+)]
A framebuffers/qt/qtframebuffer.h [License: GPL (v2+)]
A framebuffers/qt/qtframebufferplugin.cpp [License: GPL (v2+)]
A framebuffers/qt/qtframebufferplugin.h [License: GPL (v2+)]
A framebuffers/x11 (directory)
A framebuffers/x11/CMakeLists.txt
A framebuffers/x11/krfb_framebuffer_x11.desktop
A framebuffers/x11/x11framebuffer.cpp [License: GPL (v2+)]
A framebuffers/x11/x11framebuffer.h [License: GPL (v2+)]
A framebuffers/x11/x11framebufferplugin.cpp [License: GPL (v2+)]
A framebuffers/x11/x11framebufferplugin.h [License: GPL (v2+)]
A krfb-framebuffer.desktop
M +6 -0 krfb.kcfg
M +5 -5 krfbserver.cpp
--- trunk/KDE/kdenetwork/krfb/CMakeLists.txt #1027329:1027330
@@ -16,6 +16,64 @@
#add_subdirectory(kcm_krfb)
if (HAVE_LIBVNCSERVER)
+#####################################
+# First target: libkrfb - a library
+# for linking plugins against.
+
+set (libkrfb_SRCS
+ framebuffer.cpp
+ framebufferplugin.cpp
+)
+
+set (libkrfb_HDRS
+ framebuffer.h
+ framebufferplugin.h
+)
+
+kde4_add_library (libkrfb
+ SHARED
+ ${libkrfb_SRCS}
+)
+
+target_link_libraries (libkrfb
+ ${QT_QTCORE_LIBRARY}
+ ${QT_QTGUI_LIBRARY}
+ ${X11_X11_LIB}
+)
+
+# This is needed because otherwise we have two targets called krfb (application and \
library) +set_target_properties (libkrfb PROPERTIES
+ OUTPUT_NAME krfb
+)
+
+set_target_properties (libkrfb PROPERTIES
+ VERSION ${GENERIC_LIB_VERSION}
+ SOVERSION ${GENERIC_LIB_VERSION}
+)
+
+install (TARGETS libkrfb
+ ${INSTALL_TARGETS_DEFAULT_ARGS}
+)
+
+install (FILES ${libkrfb_HDRS}
+ DESTINATION ${INCLUDE_INSTALL_DIR}/KRfb
+)
+
+install (FILES
+ krfb-framebuffer.desktop
+ DESTINATION ${SERVICETYPES_INSTALL_DIR}
+)
+
+#####################################
+# Build the plugins
+
+include_directories (${CMAKE_CURRENT_SOURCE_DIR})
+add_subdirectory (framebuffers)
+
+#####################################
+# Second target: krfb - the app
+# itself.
+
set(krfb_SRCS
main.cpp
trayicon.cpp
@@ -28,9 +86,7 @@
personalinvitedialog.cpp
connectioncontroller.cpp
events.cpp
- framebuffer.cpp
- qtframebuffer.cpp
- x11framebuffer.cpp
+ framebuffermanager.cpp
)
kde4_add_kcfg_files(krfb_SRCS krfbconfig.kcfgc)
@@ -45,7 +101,18 @@
kde4_add_executable(krfb ${krfb_SRCS})
-target_link_libraries(krfb ${JPEG_LIBRARIES} ${LIBVNCSERVER_LIBRARIES} \
${X11_Xext_LIB} ${X11_X11_LIB} ${X11_Xdamage_LIB} ${QT_QTNETWORK_LIBRARY} \
${KDE4_KDNSSD_LIBS} ${KDE4_KDEUI_LIBS}) +target_link_libraries(krfb
+ libkrfb
+ ${JPEG_LIBRARIES}
+ ${LIBVNCSERVER_LIBRARIES}
+ ${X11_Xext_LIB}
+ ${X11_X11_LIB}
+ ${X11_Xdamage_LIB}
+ ${QT_QTNETWORK_LIBRARY}
+ ${KDE4_KDNSSD_LIBS}
+ ${KDE4_KDEUI_LIBS}
+)
+
if(X11_XTest_FOUND)
target_link_libraries(krfb ${X11_XTest_LIB})
endif(X11_XTest_FOUND)
--- trunk/KDE/kdenetwork/krfb/framebuffer.cpp #1027329:1027330
@@ -12,26 +12,14 @@
#include <config-krfb.h>
-#include <QX11Info>
-
-#include "qtframebuffer.h"
-#include "x11framebuffer.h"
-
#include <X11/Xutil.h>
-#ifdef HAVE_XDAMAGE
-#include <X11/extensions/Xdamage.h>
-#endif
-
FrameBuffer::FrameBuffer(WId id, QObject *parent)
: QObject(parent), win(id)
{
- //TODO: implement reference counting to avoid update the screen
- // while no client is connected.
}
-
FrameBuffer::~FrameBuffer()
{
delete fb;
@@ -68,18 +56,6 @@
return 32;
}
-FrameBuffer * FrameBuffer::getFrameBuffer(WId id, QObject * parent)
-{
-#ifdef HAVE_XDAMAGE
- int tmp, er;
- if (XDamageQueryExtension(QX11Info::display(), &tmp, &er)) {
- return new X11FrameBuffer(id, parent);
- }
-#endif
- return new QtFrameBuffer(id, parent);
-
-}
-
int FrameBuffer::paddedWidth()
{
return width() * depth() / 8;
@@ -93,4 +69,3 @@
{
}
-
--- trunk/KDE/kdenetwork/krfb/framebuffer.h #1027329:1027330
@@ -15,19 +15,20 @@
#include <QList>
#include <QWidget>
+#include <kdemacros.h>
+
#include <rfb/rfb.h>
class FrameBuffer;
/**
@author Alessandro Praduroux <pradu@pradu.it>
*/
-class FrameBuffer : public QObject
+class KDE_EXPORT FrameBuffer : public QObject
{
Q_OBJECT
public:
+ explicit FrameBuffer(WId id, QObject *parent = 0);
- static FrameBuffer* getFrameBuffer(WId id, QObject *parent);
-
virtual ~FrameBuffer();
char * data();
@@ -43,12 +44,13 @@
virtual void getServerFormat(rfbPixelFormat &format);
protected:
- explicit FrameBuffer(WId id, QObject *parent = 0);
-
WId win;
char *fb;
QList<QRect> tiles;
+private:
+ Q_DISABLE_COPY(FrameBuffer);
+
};
#endif
--- trunk/KDE/kdenetwork/krfb/krfb.kcfg #1027329:1027330
@@ -34,4 +34,10 @@
<label>Password for uninvited connections.</label>
</entry>
</group>
+ <group name="FrameBuffer">
+ <entry name="preferredFrameBufferPlugin" type="String">
+ <label>Preferred Frame Buffer Plugin</label>
+ <default>krfb_framebuffer_x11</default>
+ </entry>
+ </group>
</kcfg>
--- trunk/KDE/kdenetwork/krfb/krfbserver.cpp #1027329:1027330
@@ -29,6 +29,7 @@
#include "connectioncontroller.h"
#include "framebuffer.h"
+#include "framebuffermanager.h"
#include "krfbconfig.h"
#include "invitationmanager.h"
@@ -117,9 +118,9 @@
class KrfbServer::KrfbServerP {
public:
- KrfbServerP() : fb(0), screen(0), numClients(0) {};
+ KrfbServerP() : screen(0), numClients(0) {};
- FrameBuffer *fb;
+ QSharedPointer<FrameBuffer> fb;
QList< QPointer<ConnectionController> > controllers;
rfbScreenInfoPtr screen;
int numClients;
@@ -144,7 +145,7 @@
:d(new KrfbServerP)
{
kDebug() << "starting ";
- d->fb = FrameBuffer::getFrameBuffer(QApplication::desktop()->winId(), this);
+ d->fb = FrameBufferManager::instance()->frameBuffer(QApplication::desktop()->winId());
QTimer::singleShot(0, this, SLOT(startListening()));
connect(InvitationManager::self(), \
SIGNAL(invitationNumChanged(int)),SLOT(updatePassword())); }
@@ -237,8 +238,7 @@
{
rfbShutdownServer(d->screen, true);
// framebuffer has to be deleted before X11 connection goes down
- delete d->fb;
- d->fb = 0;
+ d->fb.clear();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic