~ubuntu-branches/ubuntu/vivid/gtk-vnc/vivid

« back to all changes in this revision

Viewing changes to .pc/Use-C99-int-types-instead-of-NSPR-ones.patch/plugin/gtk-vnc-plugin.c

  • Committer: Package Import Robot
  • Author(s): Guido Günther
  • Date: 2011-12-22 20:07:18 UTC
  • mfrom: (1.2.4)
  • Revision ID: package-import@ubuntu.com-20111222200718-1r60d6ckb4dmef0m
Tags: 0.5.0-1
* [853db65] New upstream version 0.5.0 with QEMU audio extension support
* [6b72676] Update patches.
* [3552666] Remove GNUmakefile links since it breaks the out of tree build.
* [3e500f8] Update symbol files

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
  GTK-VNC-PLUGIN
3
3
 
4
4
  By Richard W.M. Jones <rjones@redhat.com>
5
 
  Copyright (C) 2008 Red Hat Inc.
 
5
  Copyright (C) 2008 Red Hat, Inc.
6
6
 
7
7
  Largely based on DiamondX (http://multimedia.cx/diamondx/), which itself
8
8
  is based on Mozilla sources.
42
42
static void
43
43
vnc_connected (GtkWidget *vnc G_GNUC_UNUSED, void *Thisv)
44
44
{
45
 
  PluginInstance *This = (PluginInstance *) Thisv;
 
45
    PluginInstance *This = (PluginInstance *) Thisv;
46
46
 
47
 
  debug ("vnc_connected, This=%p", This);
 
47
    debug ("vnc_connected, This=%p", This);
48
48
}
49
49
 
50
50
static void
51
51
vnc_disconnected (GtkWidget *vnc G_GNUC_UNUSED, void *Thisv)
52
52
{
53
 
  PluginInstance *This = (PluginInstance *) Thisv;
 
53
    PluginInstance *This = (PluginInstance *) Thisv;
54
54
 
55
 
  debug ("vnc_disconnected, This=%p", This);
 
55
    debug ("vnc_disconnected, This=%p", This);
56
56
}
57
57
 
58
58
static void
59
59
vnc_auth_credential (GtkWidget *vnc, GValueArray *creds, void *Thisv)
60
60
{
61
 
  GtkWidget *dlg = NULL;
62
 
  PluginInstance *This = (PluginInstance *) Thisv;
63
 
  unsigned i, prompt = 0;
64
 
  const char **data;
65
 
 
66
 
  debug ("vnc_auth_credential, This=%p", This);
67
 
 
68
 
  data = g_new0 (const char *, creds->n_values);
69
 
 
70
 
  for (i = 0; i < creds->n_values; ++i) {
71
 
    GValue *cred = g_value_array_get_nth (creds, i);
72
 
    switch (g_value_get_enum (cred)) {
73
 
    case VNC_DISPLAY_CREDENTIAL_USERNAME:
74
 
    case VNC_DISPLAY_CREDENTIAL_PASSWORD:
75
 
      prompt++;
76
 
      break;
77
 
    case VNC_DISPLAY_CREDENTIAL_CLIENTNAME:
78
 
      data[i] = "gvncviewer";
79
 
      break;
80
 
    }
81
 
  }
82
 
 
83
 
  /* Prompt user for username and password. */
84
 
  if (prompt) {
85
 
    GtkWidget **label, **entry, *box, *vbox;
86
 
    int row, response;
87
 
 
88
 
    dlg = gtk_dialog_new_with_buttons
89
 
      ("Gtk-VNC: Authentication required",
90
 
       GTK_WINDOW (This->container),
91
 
       GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
92
 
       GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
93
 
       GTK_STOCK_OK, GTK_RESPONSE_OK,
94
 
       NULL);
95
 
    gtk_dialog_set_default_response (GTK_DIALOG(dlg), GTK_RESPONSE_OK);
96
 
 
97
 
    box = gtk_table_new (creds->n_values, 2, FALSE);
98
 
    label = g_new (GtkWidget *, prompt);
99
 
    entry = g_new (GtkWidget *, prompt);
100
 
 
101
 
    for (i = 0, row = 0; i < creds->n_values; ++i) {
102
 
      GValue *cred = g_value_array_get_nth (creds, i);
103
 
      switch (g_value_get_enum(cred)) {
104
 
      case VNC_DISPLAY_CREDENTIAL_USERNAME:
105
 
        label[row] = gtk_label_new("Username:");
106
 
        break;
107
 
      case VNC_DISPLAY_CREDENTIAL_PASSWORD:
108
 
        label[row] = gtk_label_new("Password:");
109
 
        break;
110
 
      default:
111
 
        continue;
112
 
      }
113
 
      entry[row] = gtk_entry_new();
114
 
      if (g_value_get_enum (cred) == VNC_DISPLAY_CREDENTIAL_PASSWORD)
115
 
        gtk_entry_set_visibility (GTK_ENTRY (entry[row]), FALSE);
116
 
 
117
 
      gtk_table_attach(GTK_TABLE(box), label[i], 0, 1, row, row+1, GTK_SHRINK, GTK_SHRINK, 3, 3);
118
 
      gtk_table_attach(GTK_TABLE(box), entry[i], 1, 2, row, row+1, GTK_SHRINK, GTK_SHRINK, 3, 3);
119
 
      row++;
120
 
    }
121
 
 
122
 
    vbox = gtk_bin_get_child(GTK_BIN(dlg));
123
 
    gtk_container_add(GTK_CONTAINER(vbox), box);
124
 
 
125
 
    gtk_widget_show_all(dlg);
126
 
    response = gtk_dialog_run(GTK_DIALOG(dlg));
127
 
    gtk_widget_hide(GTK_WIDGET(dlg));
128
 
 
129
 
    if (response == GTK_RESPONSE_OK) {
130
 
      for (i = 0, row = 0 ; i < creds->n_values ; i++) {
131
 
        GValue *cred = g_value_array_get_nth(creds, i);
132
 
        switch (g_value_get_enum(cred)) {
133
 
        case VNC_DISPLAY_CREDENTIAL_USERNAME:
134
 
        case VNC_DISPLAY_CREDENTIAL_PASSWORD:
135
 
          data[i] = gtk_entry_get_text(GTK_ENTRY(entry[row]));
136
 
          row++;
137
 
          break;
138
 
        }
139
 
      }
140
 
    }
141
 
  }
142
 
 
143
 
  /* Set the credentials. */
144
 
  for (i = 0 ; i < creds->n_values ; i++) {
145
 
    GValue *cred = g_value_array_get_nth(creds, i);
146
 
    if (data[i]) {
147
 
      if (vnc_display_set_credential(VNC_DISPLAY(vnc),
148
 
                                     g_value_get_enum(cred),
149
 
                                     data[i])) {
150
 
        debug ("Failed to set credential type %d", g_value_get_enum(cred));
151
 
        vnc_display_close(VNC_DISPLAY(vnc));
152
 
      }
153
 
    } else {
154
 
      debug ("Unsupported credential type %d", g_value_get_enum(cred));
155
 
      vnc_display_close(VNC_DISPLAY(vnc));
156
 
    }
157
 
  }
158
 
 
159
 
  g_free (data);
160
 
  if (dlg)
161
 
    gtk_widget_destroy (GTK_WIDGET(dlg));
 
61
    GtkWidget *dlg = NULL;
 
62
    PluginInstance *This = (PluginInstance *) Thisv;
 
63
    unsigned i, prompt = 0;
 
64
    const char **data;
 
65
 
 
66
    debug ("vnc_auth_credential, This=%p", This);
 
67
 
 
68
    data = g_new0 (const char *, creds->n_values);
 
69
 
 
70
    for (i = 0; i < creds->n_values; ++i) {
 
71
        GValue *cred = g_value_array_get_nth (creds, i);
 
72
        switch (g_value_get_enum (cred)) {
 
73
        case VNC_DISPLAY_CREDENTIAL_USERNAME:
 
74
        case VNC_DISPLAY_CREDENTIAL_PASSWORD:
 
75
            prompt++;
 
76
            break;
 
77
        case VNC_DISPLAY_CREDENTIAL_CLIENTNAME:
 
78
            data[i] = "gvncviewer";
 
79
            break;
 
80
        }
 
81
    }
 
82
 
 
83
    /* Prompt user for username and password. */
 
84
    if (prompt) {
 
85
        GtkWidget **label, **entry, *box, *vbox;
 
86
        int row, response;
 
87
 
 
88
        dlg = gtk_dialog_new_with_buttons
 
89
            ("Gtk-VNC: Authentication required",
 
90
             GTK_WINDOW (This->container),
 
91
             GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
 
92
             GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 
93
             GTK_STOCK_OK, GTK_RESPONSE_OK,
 
94
             NULL);
 
95
        gtk_dialog_set_default_response (GTK_DIALOG(dlg), GTK_RESPONSE_OK);
 
96
 
 
97
        box = gtk_table_new (creds->n_values, 2, FALSE);
 
98
        label = g_new (GtkWidget *, prompt);
 
99
        entry = g_new (GtkWidget *, prompt);
 
100
 
 
101
        for (i = 0, row = 0; i < creds->n_values; ++i) {
 
102
            GValue *cred = g_value_array_get_nth (creds, i);
 
103
            switch (g_value_get_enum(cred)) {
 
104
            case VNC_DISPLAY_CREDENTIAL_USERNAME:
 
105
                label[row] = gtk_label_new("Username:");
 
106
                break;
 
107
            case VNC_DISPLAY_CREDENTIAL_PASSWORD:
 
108
                label[row] = gtk_label_new("Password:");
 
109
                break;
 
110
            default:
 
111
                continue;
 
112
            }
 
113
            entry[row] = gtk_entry_new();
 
114
            if (g_value_get_enum (cred) == VNC_DISPLAY_CREDENTIAL_PASSWORD)
 
115
                gtk_entry_set_visibility (GTK_ENTRY (entry[row]), FALSE);
 
116
 
 
117
            gtk_table_attach(GTK_TABLE(box), label[i], 0, 1, row, row+1, GTK_SHRINK, GTK_SHRINK, 3, 3);
 
118
            gtk_table_attach(GTK_TABLE(box), entry[i], 1, 2, row, row+1, GTK_SHRINK, GTK_SHRINK, 3, 3);
 
119
            row++;
 
120
        }
 
121
 
 
122
        vbox = gtk_bin_get_child(GTK_BIN(dlg));
 
123
        gtk_container_add(GTK_CONTAINER(vbox), box);
 
124
 
 
125
        gtk_widget_show_all(dlg);
 
126
        response = gtk_dialog_run(GTK_DIALOG(dlg));
 
127
        gtk_widget_hide(GTK_WIDGET(dlg));
 
128
 
 
129
        if (response == GTK_RESPONSE_OK) {
 
130
            for (i = 0, row = 0 ; i < creds->n_values ; i++) {
 
131
                GValue *cred = g_value_array_get_nth(creds, i);
 
132
                switch (g_value_get_enum(cred)) {
 
133
                case VNC_DISPLAY_CREDENTIAL_USERNAME:
 
134
                case VNC_DISPLAY_CREDENTIAL_PASSWORD:
 
135
                    data[i] = gtk_entry_get_text(GTK_ENTRY(entry[row]));
 
136
                    row++;
 
137
                    break;
 
138
                }
 
139
            }
 
140
        }
 
141
    }
 
142
 
 
143
    /* Set the credentials. */
 
144
    for (i = 0 ; i < creds->n_values ; i++) {
 
145
        GValue *cred = g_value_array_get_nth(creds, i);
 
146
        if (data[i]) {
 
147
            if (vnc_display_set_credential(VNC_DISPLAY(vnc),
 
148
                                           g_value_get_enum(cred),
 
149
                                           data[i])) {
 
150
                debug ("Failed to set credential type %d", g_value_get_enum(cred));
 
151
                vnc_display_close(VNC_DISPLAY(vnc));
 
152
            }
 
153
        } else {
 
154
            debug ("Unsupported credential type %d", g_value_get_enum(cred));
 
155
            vnc_display_close(VNC_DISPLAY(vnc));
 
156
        }
 
157
    }
 
158
 
 
159
    g_free (data);
 
160
    if (dlg)
 
161
        gtk_widget_destroy (GTK_WIDGET(dlg));
162
162
}
163
163
 
164
164
NPError
165
165
GtkVNCXSetWindow (NPP instance, NPWindow *window)
166
166
{
167
 
  PluginInstance *This;
168
 
  NPSetWindowCallbackStruct *ws_info;
169
 
 
170
 
  if (instance == NULL)
171
 
    return NPERR_INVALID_INSTANCE_ERROR;
172
 
 
173
 
  This = (PluginInstance*) instance->pdata;
174
 
 
175
 
  debug ("GtkVNCXSetWindow, This=%p", This);
176
 
 
177
 
  if (This == NULL)
178
 
    return NPERR_INVALID_INSTANCE_ERROR;
179
 
 
180
 
  ws_info = (NPSetWindowCallbackStruct *)window->ws_info;
181
 
 
182
 
  /* Mozilla likes to re-run its greatest hits */
183
 
  if (window == This->window &&
184
 
      window->x == This->x &&
185
 
      window->y == This->y &&
186
 
      window->width == This->width &&
187
 
      window->height == This->height) {
188
 
    debug ("gtk-vnc-plugin: window re-run; returning");
 
167
    PluginInstance *This;
 
168
    NPSetWindowCallbackStruct *ws_info;
 
169
 
 
170
    if (instance == NULL)
 
171
        return NPERR_INVALID_INSTANCE_ERROR;
 
172
 
 
173
    This = (PluginInstance*) instance->pdata;
 
174
 
 
175
    debug ("GtkVNCXSetWindow, This=%p", This);
 
176
 
 
177
    if (This == NULL)
 
178
        return NPERR_INVALID_INSTANCE_ERROR;
 
179
 
 
180
    ws_info = (NPSetWindowCallbackStruct *)window->ws_info;
 
181
 
 
182
    /* Mozilla likes to re-run its greatest hits */
 
183
    if (window == This->window &&
 
184
        window->x == This->x &&
 
185
        window->y == This->y &&
 
186
        window->width == This->width &&
 
187
        window->height == This->height) {
 
188
        debug ("gtk-vnc-plugin: window re-run; returning");
 
189
        return NPERR_NO_ERROR;
 
190
    }
 
191
 
 
192
    This->window = window;
 
193
    This->x = window->x;
 
194
    This->y = window->y;
 
195
    This->width = window->width;
 
196
    This->height = window->height;
 
197
 
 
198
    /* Create a GtkPlug container and a Gtk-VNC widget inside it. */
 
199
    This->container = gtk_plug_new ((GdkNativeWindow)(long)window->window);
 
200
    This->vnc = vnc_display_new ();
 
201
 
 
202
    /* Make sure the canvas is capable of receiving focus. */
 
203
    GTK_WIDGET_SET_FLAGS (GTK_WIDGET(This->vnc), GTK_CAN_FOCUS);
 
204
 
 
205
    /* All the events that our canvas wants to receive */
 
206
    gtk_widget_add_events
 
207
        (This->vnc,
 
208
         GDK_BUTTON_PRESS_MASK |
 
209
         GDK_BUTTON_RELEASE_MASK |
 
210
         GDK_KEY_PRESS_MASK |
 
211
         GDK_KEY_RELEASE_MASK |
 
212
         GDK_POINTER_MOTION_MASK |
 
213
         GDK_SCROLL_MASK |
 
214
         GDK_EXPOSURE_MASK |
 
215
         GDK_VISIBILITY_NOTIFY_MASK |
 
216
         GDK_ENTER_NOTIFY_MASK |
 
217
         GDK_LEAVE_NOTIFY_MASK |
 
218
         GDK_FOCUS_CHANGE_MASK);
 
219
 
 
220
    /* Connect up the signals. */
 
221
    g_signal_connect (G_OBJECT(This->vnc), "vnc-connected",
 
222
                      G_CALLBACK(vnc_connected), This);
 
223
    g_signal_connect (G_OBJECT(This->vnc), "vnc-disconnected",
 
224
                      G_CALLBACK(vnc_disconnected), This);
 
225
#if 0
 
226
    g_signal_connect (G_OBJECT(This->vnc), "vnc-initialized",
 
227
                      G_CALLBACK(vnc_initialized), This);
 
228
#endif
 
229
    g_signal_connect (G_OBJECT(This->vnc), "vnc-auth-credential",
 
230
                      G_CALLBACK(vnc_auth_credential), This);
 
231
#if 0
 
232
    g_signal_connect (G_OBJECT(This->vnc), "vnc-auth-failure",
 
233
                      G_CALLBACK(vnc_auth_failure), This);
 
234
    g_signal_connect (G_OBJECT(This->vnc), "vnc-desktop-resize",
 
235
                      G_CALLBACK(vnc_desktop_resize), This);
 
236
    g_signal_connect (G_OBJECT(This->vnc), "vnc-pointer-grab",
 
237
                      G_CALLBACK(vnc_pointer_grab), This);
 
238
    g_signal_connect (G_OBJECT(This->vnc), "vnc-pointer-ungrab",
 
239
                      G_CALLBACK(vnc_pointer_ungrab), This);
 
240
    g_signal_connect (G_OBJECT(This->vnc), "key-press-event",
 
241
                      G_CALLBACK(vnc_screenshow), This);
 
242
#endif
 
243
 
 
244
    gtk_widget_show (This->vnc);
 
245
 
 
246
    gtk_container_add (GTK_CONTAINER(This->container), This->vnc);
 
247
 
 
248
    gtk_widget_show (This->container);
 
249
 
 
250
    /*gtk_widget_realize (This->vnc);*/
 
251
 
 
252
    /* Start connection to remote host. */
 
253
    if (This->host && This->port) {
 
254
        debug ("starting connection to %s:%s", This->host, This->port);
 
255
        vnc_display_open_host (VNC_DISPLAY(This->vnc), This->host, This->port);
 
256
    }
 
257
 
189
258
    return NPERR_NO_ERROR;
190
 
  }
191
 
 
192
 
  This->window = window;
193
 
  This->x = window->x;
194
 
  This->y = window->y;
195
 
  This->width = window->width;
196
 
  This->height = window->height;
197
 
 
198
 
  /* Create a GtkPlug container and a Gtk-VNC widget inside it. */
199
 
  This->container = gtk_plug_new ((GdkNativeWindow)(long)window->window);
200
 
  This->vnc = vnc_display_new ();
201
 
 
202
 
  /* Make sure the canvas is capable of receiving focus. */
203
 
  GTK_WIDGET_SET_FLAGS (GTK_WIDGET(This->vnc), GTK_CAN_FOCUS);
204
 
 
205
 
  /* All the events that our canvas wants to receive */
206
 
  gtk_widget_add_events
207
 
    (This->vnc,
208
 
     GDK_BUTTON_PRESS_MASK |
209
 
     GDK_BUTTON_RELEASE_MASK |
210
 
     GDK_KEY_PRESS_MASK |
211
 
     GDK_KEY_RELEASE_MASK |
212
 
     GDK_POINTER_MOTION_MASK |
213
 
     GDK_SCROLL_MASK |
214
 
     GDK_EXPOSURE_MASK |
215
 
     GDK_VISIBILITY_NOTIFY_MASK |
216
 
     GDK_ENTER_NOTIFY_MASK |
217
 
     GDK_LEAVE_NOTIFY_MASK |
218
 
     GDK_FOCUS_CHANGE_MASK);
219
 
 
220
 
  /* Connect up the signals. */
221
 
  g_signal_connect (G_OBJECT(This->vnc), "vnc-connected",
222
 
                    G_CALLBACK(vnc_connected), This);
223
 
  g_signal_connect (G_OBJECT(This->vnc), "vnc-disconnected",
224
 
                    G_CALLBACK(vnc_disconnected), This);
225
 
#if 0
226
 
  g_signal_connect (G_OBJECT(This->vnc), "vnc-initialized",
227
 
                    G_CALLBACK(vnc_initialized), This);
228
 
#endif
229
 
  g_signal_connect (G_OBJECT(This->vnc), "vnc-auth-credential",
230
 
                    G_CALLBACK(vnc_auth_credential), This);
231
 
#if 0
232
 
  g_signal_connect (G_OBJECT(This->vnc), "vnc-auth-failure",
233
 
                    G_CALLBACK(vnc_auth_failure), This);
234
 
  g_signal_connect (G_OBJECT(This->vnc), "vnc-desktop-resize",
235
 
                    G_CALLBACK(vnc_desktop_resize), This);
236
 
  g_signal_connect (G_OBJECT(This->vnc), "vnc-pointer-grab",
237
 
                    G_CALLBACK(vnc_pointer_grab), This);
238
 
  g_signal_connect (G_OBJECT(This->vnc), "vnc-pointer-ungrab",
239
 
                    G_CALLBACK(vnc_pointer_ungrab), This);
240
 
  g_signal_connect (G_OBJECT(This->vnc), "key-press-event",
241
 
                    G_CALLBACK(vnc_screenshow), This);
242
 
#endif
243
 
 
244
 
  gtk_widget_show (This->vnc);
245
 
 
246
 
  gtk_container_add (GTK_CONTAINER(This->container), This->vnc);
247
 
 
248
 
  gtk_widget_show (This->container);
249
 
 
250
 
  /*gtk_widget_realize (This->vnc);*/
251
 
 
252
 
  /* Start connection to remote host. */
253
 
  if (This->host && This->port) {
254
 
    debug ("starting connection to %s:%s", This->host, This->port);
255
 
    vnc_display_open_host (VNC_DISPLAY(This->vnc), This->host, This->port);
256
 
  }
257
 
 
258
 
  return NPERR_NO_ERROR;
259
259
}
260
260
 
261
261
NPError
262
262
GtkVNCDestroyWindow (NPP instance)
263
263
{
264
 
  PluginInstance *This = (PluginInstance*) instance->pdata;
265
 
 
266
 
  debug ("GtkVNCDestroyWindow, This=%p", This);
267
 
 
268
 
  if (This && This->container) {
269
 
    gtk_widget_destroy (This->container);
270
 
    This->container = This->vnc = NULL;
271
 
  }
272
 
 
273
 
  return NPERR_NO_ERROR;
 
264
    PluginInstance *This = (PluginInstance*) instance->pdata;
 
265
 
 
266
    debug ("GtkVNCDestroyWindow, This=%p", This);
 
267
 
 
268
    if (This && This->container) {
 
269
        gtk_widget_destroy (This->container);
 
270
        This->container = This->vnc = NULL;
 
271
    }
 
272
 
 
273
    return NPERR_NO_ERROR;
274
274
}
275
275
 
276
276
static NPWindow windowlessWindow;
278
278
int16
279
279
GtkVNCXHandleEvent(NPP instance, void *event)
280
280
{
281
 
  XGraphicsExposeEvent exposeEvent;
282
 
  XEvent *nsEvent;
283
 
 
284
 
  debug ("GtkVNCXHandleEvent");
285
 
 
286
 
  nsEvent = (XEvent *) event;
287
 
  exposeEvent = nsEvent->xgraphicsexpose;
288
 
 
289
 
  /*printf(" event: x, y, w, h = %d, %d, %d, %d; display @ %p, window/drawable = %d\n",
290
 
    exposeEvent.x,
291
 
    exposeEvent.y,
292
 
    exposeEvent.width,
293
 
    exposeEvent.height,
294
 
    exposeEvent.display,
295
 
    exposeEvent.drawable);*/
296
 
 
297
 
  windowlessWindow.window = exposeEvent.display;
298
 
  windowlessWindow.x = exposeEvent.x;
299
 
  windowlessWindow.y = exposeEvent.y;
300
 
  windowlessWindow.width = exposeEvent.width;
301
 
  windowlessWindow.height = exposeEvent.height;
302
 
  windowlessWindow.ws_info = (void *)exposeEvent.drawable;
303
 
 
304
 
  NPP_SetWindow(instance, &windowlessWindow);
305
 
 
306
 
  return 0;
 
281
    XGraphicsExposeEvent exposeEvent;
 
282
    XEvent *nsEvent;
 
283
 
 
284
    debug ("GtkVNCXHandleEvent");
 
285
 
 
286
    nsEvent = (XEvent *) event;
 
287
    exposeEvent = nsEvent->xgraphicsexpose;
 
288
 
 
289
    /*printf(" event: x, y, w, h = %d, %d, %d, %d; display @ %p, window/drawable = %d\n",
 
290
      exposeEvent.x,
 
291
      exposeEvent.y,
 
292
      exposeEvent.width,
 
293
      exposeEvent.height,
 
294
      exposeEvent.display,
 
295
      exposeEvent.drawable);*/
 
296
 
 
297
    windowlessWindow.window = exposeEvent.display;
 
298
    windowlessWindow.x = exposeEvent.x;
 
299
    windowlessWindow.y = exposeEvent.y;
 
300
    windowlessWindow.width = exposeEvent.width;
 
301
    windowlessWindow.height = exposeEvent.height;
 
302
    windowlessWindow.ws_info = (void *)exposeEvent.drawable;
 
303
 
 
304
    NPP_SetWindow(instance, &windowlessWindow);
 
305
 
 
306
    return 0;
307
307
}
 
308
/*
 
309
 * Local variables:
 
310
 *  c-indent-level: 4
 
311
 *  c-basic-offset: 4
 
312
 *  indent-tabs-mode: nil
 
313
 * End:
 
314
 */