Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • wayland/weston
  • valpackett/weston
  • daniels/weston
  • pq/weston
  • pochu/weston
  • lubosz/weston
  • phomes/weston
  • mvlad/weston
  • etom/weston
  • agners/weston
  • m.tretter/weston
  • pH5/weston
  • rohanjulka19/weston
  • mvaldina/weston
  • drawat/weston
  • emersion/weston
  • linkmauve/weston
  • jadahl/weston
  • tzimmermann/weston
  • cwjo/weston
  • ktullavik/weston
  • orbitcowboy/weston
  • ivyl/weston
  • afrantzis/weston
  • mol/weston
  • vliaskov/weston
  • inzamam.15/weston
  • xexaxo/weston
  • rmader/weston
  • eucan/weston
  • Eugeniy.Paltsev/weston
  • aknautiyal/weston
  • ascent/weston
  • dima/weston
  • ollieparanoid/weston
  • ant8me/weston
  • rdp.effort/weston
  • ewtoombs/weston
  • sjoerd/weston
  • harishkrupo/weston
  • eyelash/weston
  • zubzub/weston
  • mtey/weston
  • strassek/weston
  • bluesirhl/weston
  • makepost/weston
  • bentiss/weston
  • bugaevc/weston
  • derekf/weston
  • Vivek/weston
  • Rigo-V/weston
  • learning/weston
  • mstoeckl/weston
  • ayaka/weston
  • zumbi/weston
  • maxice8/weston
  • romangg/weston
  • JaredHu/weston
  • justdoGIT/weston
  • swick/weston
  • lucaweiss/weston
  • jameshilliard/weston
  • barry.song/weston
  • borneoa/weston
  • bbeckett/weston
  • Kishore409/weston
  • AIDEA775/weston
  • arandomhuman/weston
  • maos20008/weston
  • mvicomoya/weston
  • creiter/weston
  • bbrezillon/weston
  • hedone21/weston
  • shadeslayer/weston
  • ericruei/weston
  • lujin/weston
  • xeechou/weston
  • JeffyCN/weston
  • ajax/weston
  • hwti/weston
  • VKadasani/weston
  • khosokawa/weston
  • nniro/weston
  • RAOF/weston
  • ofourdan/weston
  • eero-t/weston
  • renjiayuan1314/weston
  • leandrohrb/weston
  • heemin.lee/weston
  • archiesix/weston
  • dude/weston
  • mforney/weston
  • marimeireles/weston
  • vitalyp/weston
  • rajendraprasadkj/weston
  • ahe/weston
  • ekurzinger/weston
  • champagneg/weston
  • dbaker/weston
  • liyi42/weston
  • saavedra.pablo/weston
  • afd/weston
  • tomek/weston
  • Cwiiis/weston
  • pmenzel/weston
  • therealkenc/weston
  • Igortorrente/weston
  • azeps/weston
  • msisov/weston
  • whot/weston
  • Fahien/weston
  • doubleagent3276/weston
  • Heartyharts/weston
  • kchibisov/weston
  • christian-rauch/weston
  • krh/weston
  • JimmyOhn/weston
  • luigi.santivetti/weston
  • bnieuwenhuizen/weston
  • pedestrianlove/weston
  • trem/weston
  • Ganjing0224/weston
  • thewayoftherob/weston
  • harpreetbasra1313/weston
  • dmitry.batrak1/weston
  • carbn/weston
  • n3rdopolis/weston
  • denix0/weston
  • NaveenKumar/weston
  • macpijan/weston
  • bigbear1385/weston
  • ShivakumarVH/weston
  • Ts/weston
  • Rpegusus2233/weston
  • hthiery/weston
  • Laplac2/weston
  • bnlrnz/weston
  • anurup_m/weston
  • kennylevinsen/weston
  • fallahmahid.mahdi/weston
  • dwrobel/weston
  • Ambyjkl/weston
  • mroussin/weston
  • wolf._.lael666/weston
  • xndcn/weston
  • nicolesager7/weston
  • tantan/weston
  • zzag/weston
  • uniontechWu/weston
  • marex/weston
  • 9531718244loco/weston
  • dhobsong/weston
  • jcline/weston
  • marler8997/weston
  • dr3020187/weston
  • cardenasvitealejandro/weston
  • kxing/weston_hpd
  • Robyn.marie/weston
  • Bastian-Krause/weston
  • hitong602/weston
  • filip-hejsek/weston
  • yjheo/weston
  • Alvarito050506/weston
  • enocknyaega/weston
  • yuanye100/weston
  • ColinKinloch/weston
  • pritbisw/weston
  • sameer.lattannavar/weston
  • dos/weston
  • jesstindean85/weston
  • ashie/weston
  • JoseExposito/weston
  • bgjdarm/weston
  • fanbaby6/weston
  • pinchyguey45/weston
  • jayjona42/weston
  • hwentland/weston
  • davidre/weston
  • soerenmeier/weston
  • matth/weston
  • fifi899173/weston
  • HarshaMM/weston
  • obbardc/weston
  • Wladmis/weston
  • alex.kanavin/weston
  • qyliss/weston
  • ekapllaj/weston
  • luckyziv/weston
  • qaqsw24/weston
  • g0hl1n/weston
  • yayowd/qimm
  • Vivalavina/weston
  • Shugyousha/weston
  • flakylawww/weston
  • chewi/weston
  • martinetd/weston
  • jlindgren90/weston
  • jianglei121381/weston
  • tpetazzoni/weston
  • shierote/weston
  • LARathbone/weston
  • wengxt/weston
  • vvavrychuk/weston
  • kusma/weston
  • Emantor/weston
  • Ivaniku/tayland
  • 5HT/weston
  • iason.paraskevopoulos/weston
  • jpewhacker/weston
  • ivan.nikolaenko/weston
  • OctopusET/weston
  • paraaz4959/weston
  • vnguyentrong/weston
  • PaulKocialkowski/weston
  • vyivel/weston
  • khangtb/weston
  • isinyaaa/weston
  • meshki022/weston
  • adoan/weston
  • YDinhVan/weston
  • stolk/weston
  • amaksoft/weston
  • flto/weston
  • molinari/weston
  • k77951586/weston
  • t-8ch/weston
  • mominurisiamm887/weston
  • SergioGDR/weston
  • xiangxuy/weston
  • petervdperk/weston
  • zhourunsheng2008/weston
  • vanvugt/weston
  • gilvbp/weston
  • gfxstrand/weston
  • rhelmot/weston
  • yadneshk/weston
  • phnaharris/weston
  • pixellon/weston
  • askebm/weston
  • ChaoGuo/weston
  • lk1025/weston
  • jh-hsd/weston
  • mihlenfeldt/weston
  • wujiansun/weston
  • bmkimg/weston
  • smit-mayani/weston
  • pritamabiswas/weston
  • adarshgm/weston
  • zzyiwei/weston
  • enunes/weston
  • HeYong/weston
  • rawoul/weston
  • andreinonea/weston
  • pleasurefish/weston
  • Foreal/weston
  • kraj/weston
  • rsmith/weston
  • zhouliang/weston
  • Benjamin_Loison/weston
  • daissi/weston
  • sophia/weston
  • wismill/weston
  • rgonzalez/weston
  • diegonieto/weston
  • rgallaispou/weston
  • sardemff7/weston
  • puhui/weston
  • vanfanel/weston
  • jwillikers/weston
  • gtristan/weston
  • ghishadow/weston
  • antonino/weston
  • Zamundaaa/weston
  • bl4ckb0ne/weston
  • david.turner/weston
  • surban/weston
  • chienpv/weston
  • sami/weston
  • chiragkhurana/weston
  • Calandracas/weston
  • lfrb/weston
  • abhinavk/weston
  • joantolo/weston
  • leoli/weston
  • benh/weston
  • igor.torrente/weston
  • jeri.li/weston
  • C0rn3j/weston
  • bbara93/weston
  • heftig/weston
  • longjunyu2/weston
  • davidedmundson/weston
  • zeerd/weston
  • tmaillart1/weston
  • phreer/weston
  • ianr/weston
  • gyeyoung976/weston
  • Trigger.Huang/weston
  • ljia5/weston
  • snow/weston
  • kang-sooyeon/weston
  • marysaka/weston
  • tmaillart/weston
  • Qingwu-Li/weston
  • BBaoVanC/weston
305 results
Show changes
Commits on Source (4)
......@@ -20,7 +20,7 @@ stages:
variables:
FDO_DISTRIBUTION_VERSION: buster
FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/debian-install.sh'
FDO_DISTRIBUTION_TAG: '2020-08-17.0'
FDO_DISTRIBUTION_TAG: '2020-09-30.0'
container_prep:
......
......@@ -36,7 +36,6 @@ apt-get -y --no-install-recommends install \
build-essential \
curl \
doxygen \
freerdp2-dev \
git \
libasound2-dev \
libbluetooth-dev \
......@@ -92,6 +91,8 @@ apt-get -y --no-install-recommends install \
xwayland \
$MESA_RUNTIME_PKGS
apt-get -y --no-install-recommends -t buster-backports install \
freerdp2-dev
pip3 install --user git+https://github.com/mesonbuild/meson.git@0.49
export PATH=$HOME/.local/bin:$PATH
......@@ -161,4 +162,4 @@ cd ..
rm -rf pipewire
apt-get -y --autoremove purge $LINUX_DEV_PKGS
apt-get -y --autoremove purge $MESA_DEV_PKGS
\ No newline at end of file
apt-get -y --autoremove purge $MESA_DEV_PKGS
......@@ -53,9 +53,4 @@ if get_option('shell-ivi')
ivi_test_config.set('libexecdir', dir_libexec)
ivi_test_config.set('plugin_prefix', meson.current_build_dir())
ivi_test_config.set('westondatadir', join_paths(dir_data, 'weston'))
ivi_test_ini = configure_file(
input: '../ivi-shell/weston.ini.in',
output: 'weston-ivi-test.ini',
configuration: ivi_test_config
)
endif
[core]
shell=ivi-shell.so
modules=hmi-controller.so
[ivi-shell]
ivi-shell-user-interface=weston-ivi-shell-user-interface
#developermode=true
cursor-theme=default
cursor-size=32
base-layer-id=1000
base-layer-id-offset=10000
workspace-background-layer-id=2000
workspace-layer-id=3000
application-layer-id=4000
transition-duration=300
background-image=@westondatadir@/background.png
background-id=1001
panel-image=@westondatadir@/panel.png
panel-id=1002
surface-id-offset=10
tiling-image=@westondatadir@/tiling.png
tiling-id=1003
sidebyside-image=@westondatadir@/sidebyside.png
sidebyside-id=1004
fullscreen-image=@westondatadir@/fullscreen.png
fullscreen-id=1005
random-image=@westondatadir@/random.png
random-id=1006
home-image=@westondatadir@/home.png
home-id=1007
workspace-background-color=0x99000000
workspace-background-id=2001
[ivi-launcher]
workspace-id=0
icon-id=4001
icon=@westondatadir@/icon_ivi_flower.png
path=@bindir@/weston-flower
[ivi-launcher]
workspace-id=0
icon-id=4002
icon=@westondatadir@/icon_ivi_clickdot.png
path=@bindir@/weston-clickdot
[ivi-launcher]
workspace-id=1
icon-id=4003
icon=@westondatadir@/icon_ivi_simple-egl.png
path=@bindir@/weston-simple-egl
[ivi-launcher]
workspace-id=1
icon-id=4004
icon=@westondatadir@/icon_ivi_simple-shm.png
path=@bindir@/weston-simple-shm
[ivi-launcher]
workspace-id=2
icon-id=4005
icon=@westondatadir@/icon_ivi_smoke.png
path=@bindir@/weston-smoke
[ivi-launcher]
workspace-id=3
icon-id=4006
icon=@westondatadir@/icon_ivi_flower.png
path=@bindir@/weston-flower
[ivi-launcher]
workspace-id=3
icon-id=4007
icon=@westondatadir@/icon_ivi_clickdot.png
path=@bindir@/weston-clickdot
[ivi-launcher]
workspace-id=3
icon-id=4008
icon=@westondatadir@/icon_ivi_simple-egl.png
path=@bindir@/weston-simple-egl
[ivi-launcher]
workspace-id=3
icon-id=4009
icon=@westondatadir@/icon_ivi_simple-shm.png
path=@bindir@/weston-simple-shm
[ivi-launcher]
workspace-id=3
icon-id=4010
icon=@westondatadir@/icon_ivi_smoke.png
path=@bindir@/weston-smoke
......@@ -4,42 +4,14 @@ endif
config_h.set('BUILD_RDP_COMPOSITOR', '1')
dep_frdp = dependency('freerdp2', version: '>= 2.0.0', required: false)
dep_frdp = dependency('freerdp2', version: '>= 2.2.0', required: false)
if not dep_frdp.found()
error('RDP-backend requires freerdp2 which was not found. Or, you can use \'-Dbackend-rdp=false\'.')
error('RDP-backend requires freerdp >= 2.2.0 which was not found. Or, you can use \'-Dbackend-rdp=false\'.')
endif
dep_wpr = dependency('winpr2', version: '>= 2.0.0', required: false)
dep_wpr = dependency('winpr2', version: '>= 2.2.0', required: false)
if not dep_wpr.found()
error('RDP-backend requires winpr2 which was not found. Or, you can use \'-Dbackend-rdp=false\'.')
endif
if cc.has_header('freerdp/version.h', dependencies: dep_frdp)
config_h.set('HAVE_FREERDP_VERSION_H', '1')
endif
if cc.has_member(
'SURFACE_BITS_COMMAND', 'bmp',
dependencies : dep_frdp,
prefix : '#include <freerdp/update.h>'
)
config_h.set('HAVE_SURFACE_BITS_BMP', '1')
endif
if cc.has_type(
'enum SURFCMD_CMDTYPE',
dependencies : dep_frdp,
prefix : '#include <freerdp/update.h>'
)
config_h.set('HAVE_SURFCMD_CMDTYPE', '1')
endif
if cc.has_function(
'nsc_context_set_parameters',
dependencies : dep_frdp,
prefix: '#include <freerdp/codec/nsc.h>'
)
config_h.set('HAVE_NSC_CONTEXT_SET_PARAMETERS', '1')
error('RDP-backend requires winpr >= 2.2.0 which was not found. Or, you can use \'-Dbackend-rdp=false\'.')
endif
deps_rdp = [
......
......@@ -32,56 +32,7 @@
#include <errno.h>
#include <linux/input.h>
#if HAVE_FREERDP_VERSION_H
#include <freerdp/version.h>
#else
/* assume it's a early 1.1 version */
#define FREERDP_VERSION_MAJOR 1
#define FREERDP_VERSION_MINOR 1
#define FREERDP_VERSION_REVISION 0
#endif
#define FREERDP_VERSION_NUMBER ((FREERDP_VERSION_MAJOR * 0x10000) + \
(FREERDP_VERSION_MINOR * 0x100) + FREERDP_VERSION_REVISION)
#if FREERDP_VERSION_NUMBER >= 0x10201
#define HAVE_SKIP_COMPRESSION
#endif
#if FREERDP_VERSION_NUMBER < 0x10202
# define FREERDP_CB_RET_TYPE void
# define FREERDP_CB_RETURN(V) return
# define NSC_RESET(C, W, H)
# define RFX_RESET(C, W, H) do { rfx_context_reset(C); C->width = W; C->height = H; } while(0)
#else
#if FREERDP_VERSION_MAJOR >= 2
# define NSC_RESET(C, W, H) nsc_context_reset(C, W, H)
# define RFX_RESET(C, W, H) rfx_context_reset(C, W, H)
#else
# define NSC_RESET(C, W, H) do { nsc_context_reset(C); C->width = W; C->height = H; } while(0)
# define RFX_RESET(C, W, H) do { rfx_context_reset(C); C->width = W; C->height = H; } while(0)
#endif
#define FREERDP_CB_RET_TYPE BOOL
#define FREERDP_CB_RETURN(V) return TRUE
#endif
#ifdef HAVE_SURFACE_BITS_BMP
#define SURFACE_BPP(cmd) cmd.bmp.bpp
#define SURFACE_CODECID(cmd) cmd.bmp.codecID
#define SURFACE_WIDTH(cmd) cmd.bmp.width
#define SURFACE_HEIGHT(cmd) cmd.bmp.height
#define SURFACE_BITMAP_DATA(cmd) cmd.bmp.bitmapData
#define SURFACE_BITMAP_DATA_LEN(cmd) cmd.bmp.bitmapDataLength
#else
#define SURFACE_BPP(cmd) cmd.bpp
#define SURFACE_CODECID(cmd) cmd.codecID
#define SURFACE_WIDTH(cmd) cmd.width
#define SURFACE_HEIGHT(cmd) cmd.height
#define SURFACE_BITMAP_DATA(cmd) cmd.bitmapData
#define SURFACE_BITMAP_DATA_LEN(cmd) cmd.bitmapDataLength
#endif
#include <freerdp/freerdp.h>
#include <freerdp/listener.h>
#include <freerdp/update.h>
......@@ -91,10 +42,7 @@
#include <freerdp/codec/nsc.h>
#include <freerdp/locale/keyboard.h>
#include <winpr/input.h>
#if FREERDP_VERSION_MAJOR >= 2
#include <winpr/ssl.h>
#endif
#include "shared/helpers.h"
#include "shared/timespec-util.h"
......@@ -105,16 +53,7 @@
#define MAX_FREERDP_FDS 32
#define DEFAULT_AXIS_STEP_DISTANCE 10
#define RDP_MODE_FREQ 60 * 1000
#if FREERDP_VERSION_MAJOR >= 2 && defined(PIXEL_FORMAT_BGRA32) && !defined(PIXEL_FORMAT_B8G8R8A8)
/* The RDP API is truly wonderful: the pixel format definition changed
* from BGRA32 to B8G8R8A8, but some versions ship with a definition of
* PIXEL_FORMAT_BGRA32 which doesn't actually build. Try really, really,
* hard to find one which does. */
# define DEFAULT_PIXEL_FORMAT PIXEL_FORMAT_BGRA32
#else
# define DEFAULT_PIXEL_FORMAT RDP_PIXEL_FORMAT_B8G8R8A8
#endif
#define DEFAULT_PIXEL_FORMAT PIXEL_FORMAT_BGRA32
struct rdp_output;
......@@ -199,7 +138,7 @@ rdp_peer_refresh_rfx(pixman_region32_t *damage, pixman_image_t *image, freerdp_p
uint32_t *ptr;
RFX_RECT *rfxRect;
rdpUpdate *update = peer->update;
SURFACE_BITS_COMMAND cmd;
SURFACE_BITS_COMMAND cmd = { 0 };
RdpPeerContext *context = (RdpPeerContext *)peer->context;
Stream_Clear(context->encode_stream);
......@@ -208,22 +147,16 @@ rdp_peer_refresh_rfx(pixman_region32_t *damage, pixman_image_t *image, freerdp_p
width = (damage->extents.x2 - damage->extents.x1);
height = (damage->extents.y2 - damage->extents.y1);
#ifdef HAVE_SKIP_COMPRESSION
cmd.skipCompression = TRUE;
#else
memset(&cmd, 0, sizeof(*cmd));
#endif
#ifdef HAVE_SURFCMD_CMDTYPE
cmd.cmdType = CMDTYPE_STREAM_SURFACE_BITS;
#endif
cmd.destLeft = damage->extents.x1;
cmd.destTop = damage->extents.y1;
cmd.destRight = damage->extents.x2;
cmd.destBottom = damage->extents.y2;
SURFACE_BPP(cmd) = 32;
SURFACE_CODECID(cmd) = peer->settings->RemoteFxCodecId;
SURFACE_WIDTH(cmd) = width;
SURFACE_HEIGHT(cmd) = height;
cmd.bmp.bpp = 32;
cmd.bmp.codecID = peer->settings->RemoteFxCodecId;
cmd.bmp.width = width;
cmd.bmp.height = height;
ptr = pixman_image_get_data(image) + damage->extents.x1 +
damage->extents.y1 * (pixman_image_get_stride(image) / sizeof(uint32_t));
......@@ -246,8 +179,8 @@ rdp_peer_refresh_rfx(pixman_region32_t *damage, pixman_image_t *image, freerdp_p
pixman_image_get_stride(image)
);
SURFACE_BITMAP_DATA_LEN(cmd) = Stream_GetPosition(context->encode_stream);
SURFACE_BITMAP_DATA(cmd) = Stream_Buffer(context->encode_stream);
cmd.bmp.bitmapDataLength = Stream_GetPosition(context->encode_stream);
cmd.bmp.bitmapData = Stream_Buffer(context->encode_stream);
update->SurfaceBits(update->context, &cmd);
}
......@@ -259,7 +192,7 @@ rdp_peer_refresh_nsc(pixman_region32_t *damage, pixman_image_t *image, freerdp_p
int width, height;
uint32_t *ptr;
rdpUpdate *update = peer->update;
SURFACE_BITS_COMMAND cmd;
SURFACE_BITS_COMMAND cmd = { 0 };
RdpPeerContext *context = (RdpPeerContext *)peer->context;
Stream_Clear(context->encode_stream);
......@@ -268,22 +201,16 @@ rdp_peer_refresh_nsc(pixman_region32_t *damage, pixman_image_t *image, freerdp_p
width = (damage->extents.x2 - damage->extents.x1);
height = (damage->extents.y2 - damage->extents.y1);
#ifdef HAVE_SKIP_COMPRESSION
cmd.skipCompression = TRUE;
#else
memset(cmd, 0, sizeof(*cmd));
#endif
#ifdef HAVE_SURFCMD_CMDTYPE
cmd.cmdType = CMDTYPE_SET_SURFACE_BITS;
#endif
cmd.skipCompression = TRUE;
cmd.destLeft = damage->extents.x1;
cmd.destTop = damage->extents.y1;
cmd.destRight = damage->extents.x2;
cmd.destBottom = damage->extents.y2;
SURFACE_BPP(cmd) = 32;
SURFACE_CODECID(cmd) = peer->settings->NSCodecId;
SURFACE_WIDTH(cmd) = width;
SURFACE_HEIGHT(cmd) = height;
cmd.bmp.bpp = 32;
cmd.bmp.codecID = peer->settings->NSCodecId;
cmd.bmp.width = width;
cmd.bmp.height = height;
ptr = pixman_image_get_data(image) + damage->extents.x1 +
damage->extents.y1 * (pixman_image_get_stride(image) / sizeof(uint32_t));
......@@ -292,8 +219,8 @@ rdp_peer_refresh_nsc(pixman_region32_t *damage, pixman_image_t *image, freerdp_p
width, height,
pixman_image_get_stride(image));
SURFACE_BITMAP_DATA_LEN(cmd) = Stream_GetPosition(context->encode_stream);
SURFACE_BITMAP_DATA(cmd) = Stream_Buffer(context->encode_stream);
cmd.bmp.bitmapDataLength = Stream_GetPosition(context->encode_stream);
cmd.bmp.bitmapData = Stream_Buffer(context->encode_stream);
update->SurfaceBits(update->context, &cmd);
}
......@@ -316,7 +243,7 @@ static void
rdp_peer_refresh_raw(pixman_region32_t *region, pixman_image_t *image, freerdp_peer *peer)
{
rdpUpdate *update = peer->update;
SURFACE_BITS_COMMAND cmd;
SURFACE_BITS_COMMAND cmd = { 0 };
SURFACE_FRAME_MARKER marker;
pixman_box32_t *rect, subrect;
int nrects, i;
......@@ -330,20 +257,17 @@ rdp_peer_refresh_raw(pixman_region32_t *region, pixman_image_t *image, freerdp_p
marker.frameAction = SURFACECMD_FRAMEACTION_BEGIN;
update->SurfaceFrameMarker(peer->context, &marker);
memset(&cmd, 0, sizeof(cmd));
#ifdef HAVE_SURFCMD_CMDTYPE
cmd.cmdType = CMDTYPE_SET_SURFACE_BITS;
#endif
SURFACE_BPP(cmd) = 32;
SURFACE_CODECID(cmd) = 0;
cmd.bmp.bpp = 32;
cmd.bmp.codecID = 0;
for (i = 0; i < nrects; i++, rect++) {
/*weston_log("rect(%d,%d, %d,%d)\n", rect->x1, rect->y1, rect->x2, rect->y2);*/
cmd.destLeft = rect->x1;
cmd.destRight = rect->x2;
SURFACE_WIDTH(cmd) = rect->x2 - rect->x1;
cmd.bmp.width = (rect->x2 - rect->x1);
heightIncrement = peer->settings->MultifragMaxRequestSize / (16 + SURFACE_WIDTH(cmd) * 4);
heightIncrement = peer->settings->MultifragMaxRequestSize / (16 + cmd.bmp.width * 4);
remainingHeight = rect->y2 - rect->y1;
top = rect->y1;
......@@ -351,25 +275,25 @@ rdp_peer_refresh_raw(pixman_region32_t *region, pixman_image_t *image, freerdp_p
subrect.x2 = rect->x2;
while (remainingHeight) {
SURFACE_HEIGHT(cmd) = (remainingHeight > heightIncrement) ? heightIncrement : remainingHeight;
cmd.bmp.height = (remainingHeight > heightIncrement) ? heightIncrement : remainingHeight;
cmd.destTop = top;
cmd.destBottom = top + SURFACE_HEIGHT(cmd);
SURFACE_BITMAP_DATA_LEN(cmd) = SURFACE_WIDTH(cmd) * SURFACE_HEIGHT(cmd) * 4;
SURFACE_BITMAP_DATA(cmd) = (BYTE *)realloc(SURFACE_BITMAP_DATA(cmd), SURFACE_BITMAP_DATA_LEN(cmd));
cmd.destBottom = top + cmd.bmp.height;
cmd.bmp.bitmapDataLength = cmd.bmp.width * cmd.bmp.height * 4;
cmd.bmp.bitmapData = (BYTE *)realloc(cmd.bmp.bitmapData, cmd.bmp.bitmapDataLength);
subrect.y1 = top;
subrect.y2 = top + SURFACE_HEIGHT(cmd);
pixman_image_flipped_subrect(&subrect, image, SURFACE_BITMAP_DATA(cmd));
subrect.y2 = top + cmd.bmp.height;
pixman_image_flipped_subrect(&subrect, image, cmd.bmp.bitmapData);
/*weston_log("* sending (%d,%d, %d,%d)\n", subrect.x1, subrect.y1, subrect.x2, subrect.y2); */
update->SurfaceBits(peer->context, &cmd);
remainingHeight -= SURFACE_HEIGHT(cmd);
top += SURFACE_HEIGHT(cmd);
remainingHeight -= cmd.bmp.height;
top += cmd.bmp.height;
}
}
free(SURFACE_BITMAP_DATA(cmd));
free(cmd.bmp.bitmapData);
marker.frameAction = SURFACECMD_FRAMEACTION_END;
update->SurfaceFrameMarker(peer->context, &marker);
......@@ -476,7 +400,7 @@ rdp_switch_mode(struct weston_output *output, struct weston_mode *target_mode)
rdpSettings *settings;
pixman_image_t *new_shadow_buffer;
struct weston_mode *local_mode;
const struct pixman_renderer_output_options options = { };
const struct pixman_renderer_output_options options = { .use_shadow = true, };
local_mode = ensure_matching_mode(output, target_mode);
if (!local_mode) {
......@@ -742,20 +666,15 @@ int rdp_implant_listener(struct rdp_backend *b, freerdp_listener* instance)
}
static FREERDP_CB_RET_TYPE
static BOOL
rdp_peer_context_new(freerdp_peer* client, RdpPeerContext* context)
{
context->item.peer = client;
context->item.flags = RDP_PEER_OUTPUT_ENABLED;
#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR == 1
context->rfx_context = rfx_context_new();
#else
context->rfx_context = rfx_context_new(TRUE);
#endif
if (!context->rfx_context) {
FREERDP_CB_RETURN(FALSE);
}
if (!context->rfx_context)
return FALSE;
context->rfx_context->mode = RLGR3;
context->rfx_context->width = client->settings->DesktopWidth;
......@@ -766,22 +685,18 @@ rdp_peer_context_new(freerdp_peer* client, RdpPeerContext* context)
if (!context->nsc_context)
goto out_error_nsc;
#ifdef HAVE_NSC_CONTEXT_SET_PARAMETERS
nsc_context_set_parameters(context->nsc_context, NSC_COLOR_FORMAT, DEFAULT_PIXEL_FORMAT);
#else
nsc_context_set_pixel_format(context->nsc_context, DEFAULT_PIXEL_FORMAT);
#endif
context->encode_stream = Stream_New(NULL, 65536);
if (!context->encode_stream)
goto out_error_stream;
FREERDP_CB_RETURN(TRUE);
return TRUE;
out_error_nsc:
rfx_context_free(context->rfx_context);
out_error_stream:
nsc_context_free(context->nsc_context);
FREERDP_CB_RETURN(FALSE);
return FALSE;
}
static void
......@@ -800,8 +715,8 @@ rdp_peer_context_free(freerdp_peer* client, RdpPeerContext* context)
if (context->item.flags & RDP_PEER_ACTIVATED) {
weston_seat_release_keyboard(context->item.seat);
weston_seat_release_pointer(context->item.seat);
/* XXX we should weston_seat_release(context->item.seat); here
* but it would crash on reconnect */
weston_seat_release(context->item.seat);
free(context->item.seat);
}
Stream_Free(context->encode_stream, TRUE);
......@@ -1034,8 +949,8 @@ xf_peer_activate(freerdp_peer* client)
}
weston_output = &output->base;
RFX_RESET(peerCtx->rfx_context, weston_output->width, weston_output->height);
NSC_RESET(peerCtx->nsc_context, weston_output->width, weston_output->height);
rfx_context_reset(peerCtx->rfx_context, weston_output->width, weston_output->height);
nsc_context_reset(peerCtx->nsc_context, weston_output->width, weston_output->height);
if (peersItem->flags & RDP_PEER_ACTIVATED)
return TRUE;
......@@ -1108,7 +1023,7 @@ xf_peer_post_connect(freerdp_peer *client)
return TRUE;
}
static FREERDP_CB_RET_TYPE
static BOOL
xf_mouseEvent(rdpInput *input, UINT16 flags, UINT16 x, UINT16 y)
{
RdpPeerContext *peerContext = (RdpPeerContext *)input->context;
......@@ -1170,10 +1085,10 @@ xf_mouseEvent(rdpInput *input, UINT16 flags, UINT16 x, UINT16 y)
if (need_frame)
notify_pointer_frame(peerContext->item.seat);
FREERDP_CB_RETURN(TRUE);
return TRUE;
}
static FREERDP_CB_RET_TYPE
static BOOL
xf_extendedMouseEvent(rdpInput *input, UINT16 flags, UINT16 x, UINT16 y)
{
RdpPeerContext *peerContext = (RdpPeerContext *)input->context;
......@@ -1186,11 +1101,11 @@ xf_extendedMouseEvent(rdpInput *input, UINT16 flags, UINT16 x, UINT16 y)
notify_motion_absolute(peerContext->item.seat, &time, x, y);
}
FREERDP_CB_RETURN(TRUE);
return TRUE;
}
static FREERDP_CB_RET_TYPE
static BOOL
xf_input_synchronize_event(rdpInput *input, UINT32 flags)
{
freerdp_peer *client = input->context->peer;
......@@ -1209,11 +1124,11 @@ xf_input_synchronize_event(rdpInput *input, UINT32 flags)
rdp_peer_refresh_region(&damage, client);
pixman_region32_fini(&damage);
FREERDP_CB_RETURN(TRUE);
return TRUE;
}
static FREERDP_CB_RET_TYPE
static BOOL
xf_input_keyboard_event(rdpInput *input, UINT16 flags, UINT16 code)
{
uint32_t scan_code, vk_code, full_code;
......@@ -1223,7 +1138,7 @@ xf_input_keyboard_event(rdpInput *input, UINT16 flags, UINT16 code)
struct timespec time;
if (!(peerContext->item.flags & RDP_PEER_ACTIVATED))
FREERDP_CB_RETURN(TRUE);
return TRUE;
if (flags & KBD_FLAGS_DOWN) {
keyState = WL_KEYBOARD_KEY_STATE_PRESSED;
......@@ -1251,18 +1166,18 @@ xf_input_keyboard_event(rdpInput *input, UINT16 flags, UINT16 code)
scan_code - 8, keyState, STATE_UPDATE_AUTOMATIC);
}
FREERDP_CB_RETURN(TRUE);
return TRUE;
}
static FREERDP_CB_RET_TYPE
static BOOL
xf_input_unicode_keyboard_event(rdpInput *input, UINT16 flags, UINT16 code)
{
weston_log("Client sent a unicode keyboard event (flags:0x%X code:0x%X)\n", flags, code);
FREERDP_CB_RETURN(TRUE);
return TRUE;
}
static FREERDP_CB_RET_TYPE
static BOOL
xf_suppress_output(rdpContext *context, BYTE allow, const RECTANGLE_16 *area)
{
RdpPeerContext *peerContext = (RdpPeerContext *)context;
......@@ -1272,7 +1187,7 @@ xf_suppress_output(rdpContext *context, BYTE allow, const RECTANGLE_16 *area)
else
peerContext->item.flags &= (~RDP_PEER_OUTPUT_ENABLED);
FREERDP_CB_RETURN(TRUE);
return TRUE;
}
static int
......@@ -1357,16 +1272,16 @@ error_initialize:
}
static FREERDP_CB_RET_TYPE
static BOOL
rdp_incoming_peer(freerdp_listener *instance, freerdp_peer *client)
{
struct rdp_backend *b = (struct rdp_backend *)instance->param4;
if (rdp_peer_init(client, b) < 0) {
weston_log("error when treating incoming peer\n");
FREERDP_CB_RETURN(FALSE);
return FALSE;
}
FREERDP_CB_RETURN(TRUE);
return TRUE;
}
static const struct weston_rdp_output_api api = {
......
......@@ -40,10 +40,102 @@ fixture_setup(struct weston_test_harness *harness)
compositor_setup_defaults(&setup);
setup.shell = SHELL_IVI;
/** TODO: Convert this test to use weston_ini_setup */
setup.config_file = strdup(TESTSUITE_IVI_CONFIG_PATH);
setup.logging_scopes = "log,test-harness-plugin,proto";
weston_ini_setup(&setup,
cfgln("[core]"),
cfgln("shell=%s", "ivi-shell.so"),
cfgln("modules=", "hmi-controller.so"),
cfgln("[ivi-shell]"),
cfgln("ivi-shell-user-interface=%s", "weston-ivi-shell-user-interface"),
cfgln("cursor-theme=%s", "default"),
cfgln("cursor-size=%d", 32),
cfgln("base-layer-id=%d", 1000),
cfgln("base-layer-id-offset=%d", 10000),
cfgln("workspace-background-layer-id=%d", 2000),
cfgln("workspace-layer-id=%d", 3000),
cfgln("application-layer-id=%d", 4000),
cfgln("transition-duration=%d", 300),
cfgln("background-image=%s", WESTON_DATA_DIR "/background.png"),
cfgln("background-id=%d", 1001),
cfgln("panel-image=%s", WESTON_DATA_DIR "/panel.png"),
cfgln("panel-id=%d", 1002),
cfgln("surface-id-offset=%d", 10),
cfgln("tiling-image=%s", WESTON_DATA_DIR "/tiling.png"),
cfgln("tiling-id=%d", 1003),
cfgln("sidebyside-image=%s", WESTON_DATA_DIR "/sidebyside.png"),
cfgln("sidebyside-id=%d", 1004),
cfgln("fullscreen-image=%s", WESTON_DATA_DIR "/fullscreen.png"),
cfgln("fullscreen-id=%d", 1005),
cfgln("random-image=%s", WESTON_DATA_DIR "/random.png"),
cfgln("random-id=%d", 1006),
cfgln("home-image=%s", WESTON_DATA_DIR "/home.png"),
cfgln("home-id=%d", 1007),
cfgln("workspace-background-color=%s", "0x99000000"),
cfgln("workspace-background-id=%d", 2001),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 0),
cfgln("icon-id=%d", 4001),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_flower.png"),
cfgln("path=%s", BINDIR "/weston-flower"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 0),
cfgln("icon-id=%d", 4002),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_clickdot.png"),
cfgln("path=%s", BINDIR "/weston-clickdot"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 1),
cfgln("icon-id=%d", 4003),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_simple-egl.png"),
cfgln("path=%s", BINDIR "/weston-simple-egl"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 1),
cfgln("icon-id=%d", 4004),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_simple-shm.png"),
cfgln("path=%s", BINDIR "/weston-simple-shm"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 2),
cfgln("icon-id=%d", 4005),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_smoke.png"),
cfgln("path=%s", BINDIR "/weston-smoke"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 3),
cfgln("icon-id=%d", 4006),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_flower.png"),
cfgln("path=%s", BINDIR "/weston-flower"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 3),
cfgln("icon-id=%d", 4007),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_clickdot.png"),
cfgln("path=%s", BINDIR "/weston-clickdot"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 3),
cfgln("icon-id=%d", 4008),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_simple-egl.png"),
cfgln("path=%s", BINDIR "/weston-simple-egl"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 3),
cfgln("icon-id=%d", 4009),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_simple-shm.png"),
cfgln("path=%s", BINDIR "/weston-simple-shm"),
cfgln("[ivi-launcher]"),
cfgln("workspace-id=%d", 3),
cfgln("icon-id=%d", 4010),
cfgln("icon=%s", WESTON_DATA_DIR "/icon_ivi_smoke.png"),
cfgln("path=%s", BINDIR "/weston-smoke")
);
return weston_test_harness_execute_as_client(harness, &setup);
}
DECLARE_FIXTURE_SETUP(fixture_setup);
......
......@@ -266,7 +266,6 @@ test_config_h.set_quoted('WESTON_TEST_REFERENCE_PATH', meson.current_source_dir(
test_config_h.set_quoted('WESTON_MODULE_MAP', env_modmap)
test_config_h.set_quoted('WESTON_DATA_DIR', join_paths(meson.current_source_dir(), '..', 'data'))
test_config_h.set_quoted('TESTSUITE_PLUGIN_PATH', exe_plugin_test.full_path())
test_config_h.set_quoted('TESTSUITE_IVI_CONFIG_PATH', join_paths(meson.current_build_dir(), '../ivi-shell/weston-ivi-test.ini'))
configure_file(output: 'test-config.h', configuration: test_config_h)
foreach t : tests
......