Implemented get_token_list() and get_window_info() client side.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13453 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2005-07-05 17:30:54 +00:00
parent 38b7e756d2
commit d76e154b8b
3 changed files with 109 additions and 13 deletions

View File

@ -1,6 +1,10 @@
#ifndef _APPSERVER_PROTOCOL_
#define _APPSERVER_PROTOCOL_
#include <SupportDefs.h>
// Server port names. The input port is the port which is used to receive
// input messages from the Input Server. The other is the "main" port for
// the server and is utilized mostly by BApplication objects.
@ -9,14 +13,19 @@
enum {
// Used for quick replies from the app_server
SERVER_TRUE='_srt',
SERVER_FALSE,
AS_SERVER_BMESSAGE,
SERVER_TRUE = B_OK,
SERVER_FALSE = B_ERROR,
AS_SERVER_BMESSAGE = 1,
AS_SERVER_AREALINK,
AS_SERVER_SESSION,
AS_SERVER_PORTLINK,
AS_CLIENT_DEAD,
// Desktop definitions
AS_GET_WINDOW_LIST,
AS_GET_WINDOW_INFO,
// Application definitions
AS_CREATE_APP,
AS_DELETE_APP,

View File

@ -0,0 +1,53 @@
/*
* Copyright 2005, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Axel Dörfler, axeld@pinc-software.de
*/
#ifndef _WINDOW_INFO_H_
#define _WINDOW_INFO_H_
#include <SupportDefs.h>
struct window_info {
team_id team;
int32 server_token;
int32 thread;
int32 client_token;
int32 client_port;
uint32 workspaces;
int32 layer; // whatever this is...
uint32 type; // see below
uint32 flags;
int32 window_left;
int32 window_top;
int32 window_right;
int32 window_bottom;
int32 show_hide_level;
bool is_mini;
} _PACKED;
struct client_window_info : window_info {
char name[1];
} _PACKED;
enum {
// taken from Deskbar
kNormalWindow = 0,
kDesktopWindow = 1024,
kMenuWindow = 1025,
kWindowScreen = 1026,
};
enum window_action {
B_MINIMIZE_WINDOW,
B_BRING_TO_FRONT
};
#endif // _WINDOW_INFO_H_

View File

@ -37,11 +37,8 @@
// TODO: remove this header
#include <stdio.h>
// Private definitions not placed in public headers
extern "C" void _init_global_fonts();
extern "C" status_t _fini_interface_kit_();
#include <AppServerLink.h>
#include <WindowInfo.h>
#include <InputServerTypes.h>
#include <input_globals.h>
#include <ServerProtocol.h>
@ -53,6 +50,10 @@ extern "C" status_t _fini_interface_kit_();
#include "moreUTF8.h"
#include "truncate_string.h"
// Private definitions not placed in public headers
extern "C" void _init_global_fonts();
extern "C" status_t _fini_interface_kit_();
using namespace BPrivate;
menu_info *_menu_info_ptr_;
@ -986,18 +987,51 @@ do_window_action(int32 window_id, int32 action,
window_info *
get_window_info(int32 a_token)
get_window_info(int32 serverToken)
{
// ToDo: implement me, needed for Deskbar!
return NULL;
BPrivate::AppServerLink link;
link.StartMessage(AS_GET_WINDOW_INFO);
link.Attach<int32>(serverToken);
int32 code;
if (link.FlushWithReply(code) != B_OK || code != B_OK)
return NULL;
int32 size;
link.Read<int32>(&size);
client_window_info* info = (client_window_info*)malloc(size);
if (info == NULL)
return NULL;
link.Read(info, size);
return info;
}
int32 *
get_token_list(team_id app, int32 *count)
get_token_list(team_id team, int32 *_count)
{
// ToDo: implement me, needed for Deskbar!
return NULL;
BPrivate::AppServerLink link;
link.StartMessage(AS_GET_WINDOW_LIST);
link.Attach<team_id>(team);
int32 code;
if (link.FlushWithReply(code) != B_OK || code != B_OK)
return NULL;
int32 count;
link.Read<int32>(&count);
int32* tokens = (int32*)malloc(count * sizeof(int32));
if (tokens == NULL)
return NULL;
link.Read(tokens, count * sizeof(int32));
*_count = count;
return tokens;
}