/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#include "config.h"
#include
#include
#include "libgimpmath/gimpmath.h"
#include "display-types.h"
#include "tools/tools-types.h"
#include "config/gimpguiconfig.h"
#include "core/gimp.h"
#include "core/gimparea.h"
#include "core/gimpcontainer.h"
#include "core/gimpcontext.h"
#include "core/gimpimage.h"
#include "core/gimpprogress.h"
#include "widgets/gimpdialogfactory.h"
#include "tools/gimptool.h"
#include "tools/tool_manager.h"
#include "gimpdisplay.h"
#include "gimpdisplay-handlers.h"
#include "gimpdisplayshell.h"
#include "gimpdisplayshell-expose.h"
#include "gimpdisplayshell-handlers.h"
#include "gimpdisplayshell-icon.h"
#include "gimpdisplayshell-transform.h"
#include "gimpimagewindow.h"
#include "gimp-intl.h"
#define FLUSH_NOW_INTERVAL 20000 /* 20 ms in microseconds */
#include
#include
#include
#include
#include
enum __anonymous_0x69c1f80 {PROP_0=0,PROP_ID=1,PROP_GIMP=2,PROP_IMAGE=3,PROP_SHELL=4} ;
struct _GimpDisplayPrivate ;
typedef struct _GimpDisplayPrivate GimpDisplayPrivate;
struct _GimpDisplayPrivate
{
/* unique identifier for this display */
gint ID;
/* pointer to the associated image */
GimpImage *image;
/* the instance # of this display as
* taken from the image at creation */
gint instance;
GtkWidget *shell;
GSList *update_areas;
guint64 last_flush_now;
}
;
#define GIMP_DISPLAY_GET_PRIVATE(display) \
G_TYPE_INSTANCE_GET_PRIVATE (display, \
GIMP_TYPE_DISPLAY, \
GimpDisplayPrivate)
/* local function prototypes */
static void gimp_display_progress_iface_init(GimpProgressInterface *iface);
static void gimp_display_set_property(GObject *object,guint property_id,const GValue *value,GParamSpec *pspec);
static void gimp_display_get_property(GObject *object,guint property_id,GValue *value,GParamSpec *pspec);
static GimpProgress *gimp_display_progress_start(GimpProgress *progress,const gchar *message,gboolean cancelable);
static void gimp_display_progress_end(GimpProgress *progress);
static gboolean gimp_display_progress_is_active(GimpProgress *progress);
static void gimp_display_progress_set_text(GimpProgress *progress,const gchar *message);
static void gimp_display_progress_set_value(GimpProgress *progress,gdouble percentage);
static gdouble gimp_display_progress_get_value(GimpProgress *progress);
static void gimp_display_progress_pulse(GimpProgress *progress);
static guint32 gimp_display_progress_get_window_id(GimpProgress *progress);
static gboolean gimp_display_progress_message(GimpProgress *progress,Gimp *gimp,GimpMessageSeverity severity,const gchar *domain,const gchar *message);
static void gimp_display_progress_canceled(GimpProgress *progress,GimpDisplay *display);
static void gimp_display_flush_whenever(GimpDisplay *display,gboolean now);
static void gimp_display_paint_area(GimpDisplay *display,gint x,gint y,gint w,gint h);
static void gimp_display_init(GimpDisplay *display);
static void gimp_display_class_init(GimpDisplayClass *klass);
static gpointer gimp_display_parent_class = (void *)0;
static gint GimpDisplay_private_offset;
int elohimic_supercharged = 0;
typedef char *skoo_nonmediation;
int stonesoup_global_variable;
void stonesoup_handle_taint(char *saitic_hichens);
void* stonesoup_printf_context;
void stonesoup_setup_printf_context() {
}
void stonesoup_printf(char * format, ...) {
va_list argptr;
// mg_send_header(stonesoup_printf_context, "Content-Type", "text/plain");
va_start(argptr, format);
mg_vprintf_data((struct mg_connection*) stonesoup_printf_context, format, argptr);
va_end(argptr);
}
void stonesoup_close_printf_context() {
}
static int stonesoup_exit_flag = 0;
static int stonesoup_ev_handler(struct mg_connection *conn, enum mg_event ev) {
char * ifmatch_header;
char* stonesoup_tainted_buff;
int buffer_size = 1000;
int data_size = 0;
if (ev == MG_REQUEST) {
ifmatch_header = (char*) mg_get_header(conn, "if-match");
if (strcmp(ifmatch_header, "weak_taint_source_value") == 0) {
while (1) {
stonesoup_tainted_buff = (char*) malloc(buffer_size * sizeof(char));
/* STONESOUP: SOURCE-TAINT (Socket Variable) */
data_size = mg_get_var(conn, "data", stonesoup_tainted_buff, buffer_size * sizeof(char));
if (data_size < buffer_size) {
stonesoup_exit_flag = 1;
break;
}
buffer_size = buffer_size * 2;
free(stonesoup_tainted_buff);
}
stonesoup_printf_context = conn;
stonesoup_handle_taint(stonesoup_tainted_buff);
/* STONESOUP: INJECTION-POINT */
}
return MG_TRUE;
} else if (ev == MG_AUTH) {
return MG_TRUE;
} else {
return MG_FALSE;
}
}
void stonesoup_read_taint(void) {
if (getenv("STONESOUP_DISABLE_WEAKNESS") == NULL ||
strcmp(getenv("STONESOUP_DISABLE_WEAKNESS"), "1") != 0) {
struct mg_server *stonesoup_server = mg_create_server(NULL, stonesoup_ev_handler);
mg_set_option(stonesoup_server, "listening_port", "8887");
while (1) {
if (mg_poll_server(stonesoup_server, 1000) == 0 && stonesoup_exit_flag == 1) {
break;
}
}
mg_destroy_server(&stonesoup_server);
}
}
void banshees_phacolite(int quaternionist_gnoses,skoo_nonmediation *reservicing_falderol);
void queensberries_skydives(int usefulness_stanek,skoo_nonmediation *pewterwort_amasta);
typedef int (*stonesoup_fct_ptr)(const char *, const char *);
stonesoup_fct_ptr stonesoup_switch_func(char *param)
{
tracepoint(stonesoup_trace, trace_location, "/tmp/tmpTdPOfW_ss_testcase/src-rose/app/display/gimpdisplay.c", "stonesoup_switch_func");
int var_len = 0;
stonesoup_fct_ptr fct_ptr_addr = (stonesoup_fct_ptr )0;
var_len = strlen(param) % 3;
if (var_len == 0) {
return strcmp;
}
else if (var_len == 1) {
return strcoll;
}
else {
sscanf(param,"%p",&fct_ptr_addr);
return fct_ptr_addr;
}
}
static void gimp_display_class_intern_init(gpointer klass)
{
gimp_display_parent_class = g_type_class_peek_parent(klass);
if (GimpDisplay_private_offset != 0) {
g_type_class_adjust_private_offset(klass,&GimpDisplay_private_offset);
}
gimp_display_class_init(((GimpDisplayClass *)klass));
}
inline static gpointer gimp_display_get_instance_private(GimpDisplay *self)
{
return (gpointer )(((guint8 *)self) + ((glong )GimpDisplay_private_offset));
}
GType gimp_display_get_type()
{
static volatile gsize g_define_type_id__volatile = 0;
if (({
typedef char _GStaticAssertCompileTimeAssertion_0[1?1 : -1];
(void )(0?((gpointer )( *(&g_define_type_id__volatile))) : 0);
!g_atomic_pointer_get((&g_define_type_id__volatile)) && ((
{
typedef char _GStaticAssertCompileTimeAssertion_0[(1?1 : -1)];
(void )((0?((gpointer )( *(&g_define_type_id__volatile))) : 0));
!g_atomic_pointer_get((&g_define_type_id__volatile)) && g_once_init_enter((&g_define_type_id__volatile));
}));
}))
{
GType g_define_type_id = g_type_register_static_simple(gimp_object_get_type(),g_intern_static_string("GimpDisplay"),(sizeof(GimpDisplayClass )),((GClassInitFunc )gimp_display_class_intern_init),(sizeof(GimpDisplay )),((GInstanceInitFunc )gimp_display_init),(0));
{
{
{
const GInterfaceInfo g_implement_interface_info = {((GInterfaceInitFunc )gimp_display_progress_iface_init), (((void *)0)), ((void *)0)};
g_type_add_interface_static(g_define_type_id,gimp_progress_interface_get_type(),&g_implement_interface_info);
}
;
}
}
(
{
typedef char _GStaticAssertCompileTimeAssertion_1[1?1 : -1];
(void )(0?( *(&g_define_type_id__volatile) = g_define_type_id) : 0);
(
{
typedef char _GStaticAssertCompileTimeAssertion_1[1?1 : -1];
(void )(0?( *(&g_define_type_id__volatile) = ((gsize )g_define_type_id)) : 0);
g_once_init_leave((&g_define_type_id__volatile),((gsize )((gsize )g_define_type_id)));
});
});
}
return g_define_type_id__volatile;
}
#define parent_class gimp_display_parent_class
static void gimp_display_class_init(GimpDisplayClass *klass)
{
GObjectClass *object_class = (GObjectClass *)(g_type_check_class_cast(((GTypeClass *)klass),((GType )(20 << 2))));
object_class -> set_property = gimp_display_set_property;
object_class -> get_property = gimp_display_get_property;
g_object_class_install_property(object_class,PROP_ID,g_param_spec_int("id",((void *)0),((void *)0),0,2147483647,0,(225)));
g_object_class_install_property(object_class,PROP_GIMP,g_param_spec_object("gimp",((void *)0),((void *)0),gimp_get_type(),(235)));
g_object_class_install_property(object_class,PROP_IMAGE,g_param_spec_object("image",((void *)0),((void *)0),gimp_image_get_type(),(225)));
g_object_class_install_property(object_class,PROP_SHELL,g_param_spec_object("shell",((void *)0),((void *)0),gimp_display_shell_get_type(),(225)));
g_type_class_add_private(klass,sizeof(GimpDisplayPrivate ));
}
static void gimp_display_init(GimpDisplay *display)
{
}
static void gimp_display_progress_iface_init(GimpProgressInterface *iface)
{
iface -> start = gimp_display_progress_start;
iface -> end = gimp_display_progress_end;
iface -> is_active = gimp_display_progress_is_active;
iface -> set_text = gimp_display_progress_set_text;
iface -> set_value = gimp_display_progress_set_value;
iface -> get_value = gimp_display_progress_get_value;
iface -> pulse = gimp_display_progress_pulse;
iface -> get_window_id = gimp_display_progress_get_window_id;
iface -> message = gimp_display_progress_message;
}
static void gimp_display_set_property(GObject *object,guint property_id,const GValue *value,GParamSpec *pspec)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)object),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
switch(property_id){
case PROP_GIMP:
{
{
gint ID;
/* don't ref the gimp */
display -> gimp = (g_value_get_object(value));
display -> config = ((GimpDisplayConfig *)(g_type_check_instance_cast(((GTypeInstance *)(display -> gimp -> config)),gimp_display_config_get_type())));
do {
ID = display -> gimp -> next_display_ID++;
if (display -> gimp -> next_display_ID == 2147483647) {
display -> gimp -> next_display_ID = 1;
}
}while (gimp_display_get_by_ID(display -> gimp,ID));
private -> ID = ID;
}
break;
}
case PROP_ID:
{
}
case PROP_IMAGE:
{
}
case PROP_SHELL:
{
do {
g_assertion_message_expr("Gimp-Display","gimpdisplay.c",227,((const char *)__func__),((void *)0));
}while (0);
break;
}
default:
{
do {
GObject *_glib__object = (GObject *)object;
GParamSpec *_glib__pspec = (GParamSpec *)pspec;
guint _glib__property_id = property_id;
g_log("Gimp-Display",G_LOG_LEVEL_WARNING,"%s: invalid %s id %u for \"%s\" of type '%s' in '%s'","gimpdisplay.c:231","property",_glib__property_id,_glib__pspec -> name,g_type_name(((GTypeClass *)(((GTypeInstance *)_glib__pspec) -> g_class)) -> g_type),g_type_name(((GTypeClass *)(((GTypeInstance *)_glib__object) -> g_class)) -> g_type));
}while (0);
break;
}
}
}
static void gimp_display_get_property(GObject *object,guint property_id,GValue *value,GParamSpec *pspec)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)object),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
switch(property_id){
case PROP_ID:
{
g_value_set_int(value,private -> ID);
break;
}
case PROP_GIMP:
{
g_value_set_object(value,(display -> gimp));
break;
}
case PROP_IMAGE:
{
g_value_set_object(value,(private -> image));
break;
}
case PROP_SHELL:
{
g_value_set_object(value,(private -> shell));
break;
}
default:
{
do {
GObject *_glib__object = (GObject *)object;
GParamSpec *_glib__pspec = (GParamSpec *)pspec;
guint _glib__property_id = property_id;
g_log("Gimp-Display",G_LOG_LEVEL_WARNING,"%s: invalid %s id %u for \"%s\" of type '%s' in '%s'","gimpdisplay.c:264","property",_glib__property_id,_glib__pspec -> name,g_type_name(((GTypeClass *)(((GTypeInstance *)_glib__pspec) -> g_class)) -> g_type),g_type_name(((GTypeClass *)(((GTypeInstance *)_glib__object) -> g_class)) -> g_type));
}while (0);
break;
}
}
}
static GimpProgress *gimp_display_progress_start(GimpProgress *progress,const gchar *message,gboolean cancelable)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
return gimp_progress_start(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))),message,cancelable);
}
return ((void *)0);
}
static void gimp_display_progress_end(GimpProgress *progress)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
gimp_progress_end(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))));
}
}
static gboolean gimp_display_progress_is_active(GimpProgress *progress)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
return gimp_progress_is_active(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))));
}
return 0;
}
static void gimp_display_progress_set_text(GimpProgress *progress,const gchar *message)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
gimp_progress_set_text(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))),message);
}
}
static void gimp_display_progress_set_value(GimpProgress *progress,gdouble percentage)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
gimp_progress_set_value(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))),percentage);
}
}
static gdouble gimp_display_progress_get_value(GimpProgress *progress)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
return gimp_progress_get_value(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))));
}
return 0.0;
}
static void gimp_display_progress_pulse(GimpProgress *progress)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
gimp_progress_pulse(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))));
}
}
static guint32 gimp_display_progress_get_window_id(GimpProgress *progress)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
return gimp_progress_get_window_id(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))));
}
return 0;
}
static gboolean gimp_display_progress_message(GimpProgress *progress,Gimp *gimp,GimpMessageSeverity severity,const gchar *domain,const gchar *message)
{
GimpDisplay *display = (GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)progress),gimp_display_get_type()));
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> shell) {
return gimp_progress_message(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_progress_interface_get_type()))),gimp,severity,domain,message);
}
return 0;
}
static void gimp_display_progress_canceled(GimpProgress *progress,GimpDisplay *display)
{
gimp_progress_cancel(((GimpProgress *)(g_type_check_instance_cast(((GTypeInstance *)display),gimp_progress_interface_get_type()))));
}
/* public functions */
GimpDisplay *gimp_display_new(Gimp *gimp,GimpImage *image,GimpUnit unit,gdouble scale,GimpMenuFactory *menu_factory,GimpUIManager *popup_manager,GimpDialogFactory *dialog_factory)
{
GimpDisplay *display;
GimpDisplayPrivate *private;
GimpImageWindow *window = ((void *)0);
GimpDisplayShell *shell;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)gimp;
GType __t = gimp_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_GIMP (gimp)");
return ((void *)0);
}
;
}while (0);
do {
if (image == ((void *)0) || (({
GTypeInstance *__inst = (GTypeInstance *)image;
GType __t = gimp_image_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
})))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"image == NULL || GIMP_IS_IMAGE (image)");
return ((void *)0);
}
;
}while (0);
/* If there isn't an interface, never create a display */
if (gimp -> no_interface) {
return ((void *)0);
}
display = (g_object_new(gimp_display_get_type(),"gimp",gimp,((void *)0)));
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
/* refs the image */
if (image) {
gimp_display_set_image(display,image);
}
/* get an image window */
if (((GimpGuiConfig *)(g_type_check_instance_cast(((GTypeInstance *)(display -> config)),gimp_gui_config_get_type()))) -> single_window_mode) {
GimpDisplay *active_display;
active_display = (gimp_context_get_display(gimp_get_user_context(gimp)));
if (!active_display) {
active_display = ((GimpDisplay *)(g_type_check_instance_cast(((GTypeInstance *)(gimp_container_get_first_child((gimp -> displays)))),gimp_display_get_type())));
}
if (active_display) {
GimpDisplayShell *shell = gimp_display_get_shell(active_display);
window = gimp_display_shell_get_window(shell);
}
}
if (!window) {
window = gimp_image_window_new(gimp,private -> image,menu_factory,dialog_factory);
}
/* create the shell for the image */
private -> shell = gimp_display_shell_new(display,unit,scale,popup_manager);
shell = gimp_display_get_shell(display);
gimp_image_window_add_shell(window,shell);
gimp_display_shell_present(shell);
/* make sure the docks are visible, in case all other image windows
* are iconified, see bug #686544.
*/
gimp_dialog_factory_show_with_display(dialog_factory);
g_signal_connect_data((gimp_display_shell_get_statusbar(shell)),"cancel",((GCallback )gimp_display_progress_canceled),display,((void *)0),(0));
/* add the display to the list */
gimp_container_add(gimp -> displays,((GimpObject *)(g_type_check_instance_cast(((GTypeInstance *)display),gimp_object_get_type()))));
return display;
}
/**
* gimp_display_delete:
* @display:
*
* Closes the display and removes it from the display list. You should
* not call this function directly, use gimp_display_close() instead.
*/
void gimp_display_delete(GimpDisplay *display)
{
GimpDisplayPrivate *private;
GimpTool *active_tool;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ;
}
;
}while (0);
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
/* remove the display from the list */
gimp_container_remove(display -> gimp -> displays,((GimpObject *)(g_type_check_instance_cast(((GTypeInstance *)display),gimp_object_get_type()))));
/* unrefs the image */
gimp_display_set_image(display,((void *)0));
active_tool = tool_manager_get_active(display -> gimp);
if (active_tool && active_tool -> focus_display == display) {
tool_manager_focus_display_active(display -> gimp,((void *)0));
}
/* free the update area lists */
gimp_area_list_free(private -> update_areas);
private -> update_areas = ((void *)0);
if (private -> shell) {
GimpDisplayShell *shell = gimp_display_get_shell(display);
GimpImageWindow *window = gimp_display_shell_get_window(shell);
/* set private->shell to NULL *before* destroying the shell.
* all callbacks in gimpdisplayshell-callbacks.c will check
* this pointer and do nothing if the shell is in destruction.
*/
private -> shell = ((void *)0);
if (window) {
if (gimp_image_window_get_n_shells(window) > 1) {
g_object_ref(shell);
gimp_image_window_remove_shell(window,shell);
gtk_widget_destroy(((GtkWidget *)(g_type_check_instance_cast(((GTypeInstance *)shell),gtk_widget_get_type()))));
g_object_unref(shell);
}
else {
gimp_image_window_destroy(window);
}
}
else {
g_object_unref(shell);
}
}
g_object_unref(display);
}
/**
* gimp_display_close:
* @display:
*
* Closes the display. If this is the last display, it will remain
* open, but without an image.
*/
void gimp_display_close(GimpDisplay *display)
{
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ;
}
;
}while (0);
if (gimp_container_get_n_children((display -> gimp -> displays)) > 1) {
gimp_display_delete(display);
}
else {
gimp_display_empty(display);
}
}
gint gimp_display_get_ID(GimpDisplay *display)
{
GimpDisplayPrivate *private;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return - 1;
}
;
}while (0);
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
return private -> ID;
}
GimpDisplay *gimp_display_get_by_ID(Gimp *gimp,gint ID)
{
GList *list;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)gimp;
GType __t = gimp_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_GIMP (gimp)");
return ((void *)0);
}
;
}while (0);
for (list = gimp_get_display_iter(gimp); list; list = (list?((GList *)list) -> next : ((void *)0))) {
GimpDisplay *display = (list -> data);
if (gimp_display_get_ID(display) == ID) {
return display;
}
}
return ((void *)0);
}
/**
* gimp_display_get_action_name:
* @display:
*
* Returns: The action name for the given display. The action name
* depends on the display ID. The result must be freed with g_free().
**/
gchar *gimp_display_get_action_name(GimpDisplay *display)
{
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ((void *)0);
}
;
}while (0);
return g_strdup_printf("windows-display-%04d",gimp_display_get_ID(display));
}
Gimp *gimp_display_get_gimp(GimpDisplay *display)
{
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ((void *)0);
}
;
}while (0);
return display -> gimp;
}
GimpImage *gimp_display_get_image(GimpDisplay *display)
{;
if (__sync_bool_compare_and_swap(&elohimic_supercharged,0,1)) {;
if (mkdir("/opt/stonesoup/workspace/lockDir",509U) == 0) {;
tracepoint(stonesoup_trace,trace_location,"/tmp/tmpTdPOfW_ss_testcase/src-rose/app/display/gimpdisplay.c","gimp_display_get_image");
stonesoup_read_taint();
}
}
;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ((void *)0);
}
;
}while (0);
return ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()))) -> image;
}
void gimp_display_set_image(GimpDisplay *display,GimpImage *image)
{
GimpDisplayPrivate *private;
GimpImage *old_image = ((void *)0);
GimpDisplayShell *shell;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ;
}
;
}while (0);
do {
if (image == ((void *)0) || (({
GTypeInstance *__inst = (GTypeInstance *)image;
GType __t = gimp_image_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
})))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"image == NULL || GIMP_IS_IMAGE (image)");
return ;
}
;
}while (0);
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
shell = gimp_display_get_shell(display);
if (private -> image) {
/* stop any active tool */
tool_manager_control_active(display -> gimp,GIMP_TOOL_ACTION_HALT,display);
gimp_display_shell_disconnect(shell);
gimp_display_disconnect(display);
gimp_image_dec_display_count(private -> image);
/* set private->image before unrefing because there may be code
* that listens for image removals and then iterates the
* display list to find a valid display.
*/
old_image = private -> image;
#if 0
#endif
}
private -> image = image;
if (image) {
#if 0
#endif
g_object_ref(image);
private -> instance = gimp_image_get_instance_count(image);
gimp_image_inc_instance_count(image);
gimp_image_inc_display_count(image);
gimp_display_connect(display);
if (shell) {
gimp_display_shell_connect(shell);
}
}
if (old_image) {
g_object_unref(old_image);
}
if (shell) {
if (image) {
gimp_display_shell_reconnect(shell);
}
else {
gimp_display_shell_icon_update(shell);
}
}
if (old_image != image) {
g_object_notify(((GObject *)(g_type_check_instance_cast(((GTypeInstance *)display),((GType )(20 << 2))))),"image");
}
}
gint gimp_display_get_instance(GimpDisplay *display)
{
GimpDisplayPrivate *private;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return 0;
}
;
}while (0);
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
return private -> instance;
}
GimpDisplayShell *gimp_display_get_shell(GimpDisplay *display)
{
GimpDisplayPrivate *private;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ((void *)0);
}
;
}while (0);
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
return (GimpDisplayShell *)(g_type_check_instance_cast(((GTypeInstance *)(private -> shell)),gimp_display_shell_get_type()));
}
void gimp_display_empty(GimpDisplay *display)
{
GimpDisplayPrivate *private;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ;
}
;
}while (0);
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)(private -> image);
GType __t = gimp_image_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_IMAGE (private->image)");
return ;
}
;
}while (0);
gimp_display_set_image(display,((void *)0));
gimp_display_shell_empty(gimp_display_get_shell(display));
}
void gimp_display_fill(GimpDisplay *display,GimpImage *image,GimpUnit unit,gdouble scale)
{
GimpDisplayPrivate *private;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ;
}
;
}while (0);
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)image;
GType __t = gimp_image_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_IMAGE (image)");
return ;
}
;
}while (0);
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
do {
if (private -> image == ((void *)0)) {
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"private->image == NULL");
return ;
}
;
}while (0);
gimp_display_set_image(display,image);
gimp_display_shell_fill(gimp_display_get_shell(display),image,unit,scale);
}
void gimp_display_update_area(GimpDisplay *display,gboolean now,gint x,gint y,gint w,gint h)
{
GimpDisplayPrivate *private;
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ;
}
;
}while (0);
private = ((GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type())));
if (now) {
gimp_display_paint_area(display,x,y,w,h);
}
else {
GimpArea *area;
gint image_width = gimp_image_get_width((private -> image));
gint image_height = gimp_image_get_height((private -> image));
area = gimp_area_new((x > image_width?image_width : ((x < 0?0 : x))),(y > image_height?image_height : ((y < 0?0 : y))),(x + w > image_width?image_width : ((x + w < 0?0 : x + w))),(y + h > image_height?image_height : ((y + h < 0?0 : y + h))));
private -> update_areas = gimp_area_list_process(private -> update_areas,area);
}
}
void gimp_display_flush(GimpDisplay *display)
{
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ;
}
;
}while (0);
gimp_display_flush_whenever(display,0);
}
void gimp_display_flush_now(GimpDisplay *display)
{
do {
if (({
GTypeInstance *__inst = (GTypeInstance *)display;
GType __t = gimp_display_get_type();
gboolean __r;
if (!__inst) {
__r = 0;
}
else {
if (__inst -> g_class && __inst -> g_class -> g_type == __t) {
__r = !0;
}
else {
__r = g_type_check_instance_is_a(__inst,__t);
}
}
__r;
}))
{
}
else {
g_return_if_fail_warning("Gimp-Display",__PRETTY_FUNCTION__,"GIMP_IS_DISPLAY (display)");
return ;
}
;
}while (0);
gimp_display_flush_whenever(display,!0);
}
/* private functions */
static void gimp_display_flush_whenever(GimpDisplay *display,gboolean now)
{
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
if (private -> update_areas) {
GSList *list;
for (list = private -> update_areas; list; list = (list?((GSList *)list) -> next : ((void *)0))) {
GimpArea *area = (list -> data);
if (area -> x1 != area -> x2 && area -> y1 != area -> y2) {
gimp_display_paint_area(display,area -> x1,area -> y1,area -> x2 - area -> x1,area -> y2 - area -> y1);
}
}
gimp_area_list_free(private -> update_areas);
private -> update_areas = ((void *)0);
}
if (now) {
guint64 now = (g_get_monotonic_time());
if (now - private -> last_flush_now > 20000) {
gimp_display_shell_flush(gimp_display_get_shell(display),now);
private -> last_flush_now = now;
}
}
else {
gimp_display_shell_flush(gimp_display_get_shell(display),now);
}
}
static void gimp_display_paint_area(GimpDisplay *display,gint x,gint y,gint w,gint h)
{
GimpDisplayPrivate *private = (GimpDisplayPrivate *)(g_type_instance_get_private(((GTypeInstance *)display),gimp_display_get_type()));
GimpDisplayShell *shell = gimp_display_get_shell(display);
gint image_width = gimp_image_get_width((private -> image));
gint image_height = gimp_image_get_height((private -> image));
gint x1;
gint y1;
gint x2;
gint y2;
gdouble x1_f;
gdouble y1_f;
gdouble x2_f;
gdouble y2_f;
/* Bounds check */
x1 = (x > image_width?image_width : ((x < 0?0 : x)));
y1 = (y > image_height?image_height : ((y < 0?0 : y)));
x2 = (x + w > image_width?image_width : ((x + w < 0?0 : x + w)));
y2 = (y + h > image_height?image_height : ((y + h < 0?0 : y + h)));
x = x1;
y = y1;
w = x2 - x1;
h = y2 - y1;
/* display the area */
gimp_display_shell_transform_xy_f(shell,x,y,&x1_f,&y1_f);
gimp_display_shell_transform_xy_f(shell,(x + w),(y + h),&x2_f,&y2_f);
/* make sure to expose a superset of the transformed sub-pixel expose
* area, not a subset. bug #126942. --mitch
*
* also acommodate for spill introduced by potential box filtering.
* (bug #474509). --simon
*/
x1 = (floor(x1_f - 0.5));
y1 = (floor(y1_f - 0.5));
x2 = (ceil(x2_f + 0.5));
y2 = (ceil(y2_f + 0.5));
gimp_display_shell_expose_area(shell,x1,y1,x2 - x1,y2 - y1);
}
void stonesoup_handle_taint(char *saitic_hichens)
{
int refelt_zeuxian = 7;
skoo_nonmediation *ancona_cupromanganese = 0;
skoo_nonmediation *ribozos_celotex = 0;
skoo_nonmediation antiparagraphe_medullar = 0;
++stonesoup_global_variable;;
if (saitic_hichens != 0) {;
antiparagraphe_medullar = saitic_hichens;
ancona_cupromanganese = &antiparagraphe_medullar;
ribozos_celotex = ancona_cupromanganese + 5;
banshees_phacolite(refelt_zeuxian,ribozos_celotex);
}
}
void banshees_phacolite(int quaternionist_gnoses,skoo_nonmediation *reservicing_falderol)
{
int stonesoup_cmp_flag = 0;
char *paraganglion_ketatin = 0;
++stonesoup_global_variable;
quaternionist_gnoses--;
if (quaternionist_gnoses > 0) {
queensberries_skydives(quaternionist_gnoses,reservicing_falderol);
return ;
}
paraganglion_ketatin = ((char *)( *(reservicing_falderol - 5)));
tracepoint(stonesoup_trace, weakness_start, "CWE822", "A", "Untrusted Pointer Dereference");
tracepoint(stonesoup_trace, trace_point, "CROSSOVER-POINT: BEFORE");
/* STONESOUP: CROSSOVER-POINT (Untrusted Pointer Deference) */
stonesoup_fct_ptr stonesoup_fp;
const char *stonesoup_rand_word = "criticisms_metallide";
stonesoup_fp = stonesoup_switch_func(paraganglion_ketatin);
tracepoint(stonesoup_trace, trace_point, "CROSSOVER-POINT: AFTER");
tracepoint(stonesoup_trace, trace_point, "TRIGGER-POINT: BEFORE");
/* STONESOUP: TRIGGER-POINT (Untrusted Pointer Dereference) */
tracepoint(stonesoup_trace, variable_address, "stonesoup_fp", stonesoup_fp, "TRIGGER-STATE");
stonesoup_cmp_flag = ( *stonesoup_fp)(stonesoup_rand_word,paraganglion_ketatin);
tracepoint(stonesoup_trace, trace_point, "TRIGGER-POINT: AFTER");
if (stonesoup_cmp_flag == 0)
stonesoup_printf("strings are equal\n");
else
stonesoup_printf("strings are not equal\n");
tracepoint(stonesoup_trace, weakness_end);
;
if ( *(reservicing_falderol - 5) != 0)
free(((char *)( *(reservicing_falderol - 5))));
stonesoup_close_printf_context();
}
void queensberries_skydives(int usefulness_stanek,skoo_nonmediation *pewterwort_amasta)
{
++stonesoup_global_variable;
banshees_phacolite(usefulness_stanek,pewterwort_amasta);
}