mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-02-04 14:12:24 +00:00
Change uxsel_input_add's return type from int to pointer.
In case a front end needs to store more than an integer id to be returned to uxsel_input_remove, we now return a pointer to a frontend-defined structure.
This commit is contained in:
parent
0413cc856c
commit
b5423b51d4
@ -3218,17 +3218,26 @@ int do_cmdline(int argc, char **argv, int do_everything, int *allow_launch,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int uxsel_input_add(int fd, int rwx) {
|
struct uxsel_id {
|
||||||
|
int id;
|
||||||
|
};
|
||||||
|
|
||||||
|
uxsel_id *uxsel_input_add(int fd, int rwx) {
|
||||||
|
uxsel_id *id = snew(uxsel_id);
|
||||||
|
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
if (rwx & 1) flags |= GDK_INPUT_READ;
|
if (rwx & 1) flags |= GDK_INPUT_READ;
|
||||||
if (rwx & 2) flags |= GDK_INPUT_WRITE;
|
if (rwx & 2) flags |= GDK_INPUT_WRITE;
|
||||||
if (rwx & 4) flags |= GDK_INPUT_EXCEPTION;
|
if (rwx & 4) flags |= GDK_INPUT_EXCEPTION;
|
||||||
assert(flags);
|
assert(flags);
|
||||||
return gdk_input_add(fd, flags, fd_input_func, NULL);
|
id->id = gdk_input_add(fd, flags, fd_input_func, NULL);
|
||||||
|
|
||||||
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void uxsel_input_remove(int id) {
|
void uxsel_input_remove(uxsel_id *id) {
|
||||||
gdk_input_remove(id);
|
gdk_input_remove(id->id);
|
||||||
|
sfree(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *setup_fonts_ucs(struct gui_data *inst)
|
char *setup_fonts_ucs(struct gui_data *inst)
|
||||||
|
@ -118,6 +118,7 @@ void premsg(struct termios *);
|
|||||||
void postmsg(struct termios *);
|
void postmsg(struct termios *);
|
||||||
|
|
||||||
/* The interface used by uxsel.c */
|
/* The interface used by uxsel.c */
|
||||||
|
typedef struct uxsel_id uxsel_id;
|
||||||
void uxsel_init(void);
|
void uxsel_init(void);
|
||||||
typedef int (*uxsel_callback_fn)(int fd, int event);
|
typedef int (*uxsel_callback_fn)(int fd, int event);
|
||||||
void uxsel_set(int fd, int rwx, uxsel_callback_fn callback);
|
void uxsel_set(int fd, int rwx, uxsel_callback_fn callback);
|
||||||
@ -126,8 +127,8 @@ int select_result(int fd, int event);
|
|||||||
int first_fd(int *state, int *rwx);
|
int first_fd(int *state, int *rwx);
|
||||||
int next_fd(int *state, int *rwx);
|
int next_fd(int *state, int *rwx);
|
||||||
/* The following are expected to be provided _to_ uxsel.c by the frontend */
|
/* The following are expected to be provided _to_ uxsel.c by the frontend */
|
||||||
int uxsel_input_add(int fd, int rwx); /* returns an id */
|
uxsel_id *uxsel_input_add(int fd, int rwx); /* returns an id */
|
||||||
void uxsel_input_remove(int id);
|
void uxsel_input_remove(uxsel_id *id);
|
||||||
|
|
||||||
/* uxcfg.c */
|
/* uxcfg.c */
|
||||||
struct controlbox;
|
struct controlbox;
|
||||||
|
@ -88,8 +88,8 @@ void pageant_log(void *ctx, const char *fmt, va_list ap)
|
|||||||
* In Pageant our selects are synchronous, so these functions are
|
* In Pageant our selects are synchronous, so these functions are
|
||||||
* empty stubs.
|
* empty stubs.
|
||||||
*/
|
*/
|
||||||
int uxsel_input_add(int fd, int rwx) { return 0; }
|
uxsel_id *uxsel_input_add(int fd, int rwx) { return NULL; }
|
||||||
void uxsel_input_remove(int id) { }
|
void uxsel_input_remove(uxsel_id *id) { }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* More stubs.
|
* More stubs.
|
||||||
|
@ -533,8 +533,8 @@ void sigwinch(int signum)
|
|||||||
* In Plink our selects are synchronous, so these functions are
|
* In Plink our selects are synchronous, so these functions are
|
||||||
* empty stubs.
|
* empty stubs.
|
||||||
*/
|
*/
|
||||||
int uxsel_input_add(int fd, int rwx) { return 0; }
|
uxsel_id *uxsel_input_add(int fd, int rwx) { return NULL; }
|
||||||
void uxsel_input_remove(int id) { }
|
void uxsel_input_remove(uxsel_id *id) { }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Short description of parameters.
|
* Short description of parameters.
|
||||||
|
@ -19,7 +19,7 @@ struct fd {
|
|||||||
int fd;
|
int fd;
|
||||||
int rwx; /* 4=except 2=write 1=read */
|
int rwx; /* 4=except 2=write 1=read */
|
||||||
uxsel_callback_fn callback;
|
uxsel_callback_fn callback;
|
||||||
int id; /* for uxsel_input_remove */
|
uxsel_id *id; /* for uxsel_input_remove */
|
||||||
};
|
};
|
||||||
|
|
||||||
static tree234 *fds;
|
static tree234 *fds;
|
||||||
@ -80,6 +80,7 @@ void uxsel_del(int fd)
|
|||||||
{
|
{
|
||||||
struct fd *oldfd = find234(fds, &fd, uxsel_fd_findcmp);
|
struct fd *oldfd = find234(fds, &fd, uxsel_fd_findcmp);
|
||||||
if (oldfd) {
|
if (oldfd) {
|
||||||
|
if (oldfd->id)
|
||||||
uxsel_input_remove(oldfd->id);
|
uxsel_input_remove(oldfd->id);
|
||||||
del234(fds, oldfd);
|
del234(fds, oldfd);
|
||||||
sfree(oldfd);
|
sfree(oldfd);
|
||||||
|
@ -26,8 +26,8 @@
|
|||||||
* In PSFTP our selects are synchronous, so these functions are
|
* In PSFTP our selects are synchronous, so these functions are
|
||||||
* empty stubs.
|
* empty stubs.
|
||||||
*/
|
*/
|
||||||
int uxsel_input_add(int fd, int rwx) { return 0; }
|
uxsel_id *uxsel_input_add(int fd, int rwx) { return NULL; }
|
||||||
void uxsel_input_remove(int id) { }
|
void uxsel_input_remove(uxsel_id *id) { }
|
||||||
|
|
||||||
char *x_get_default(const char *key)
|
char *x_get_default(const char *key)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user