libdockapp: Make DAParseArguments() optional.
Some dockapps may want to handle command line options themselves, so we make this function optional. Previously, if this function was skipped, then a segfault would result when trying to access the _daContext global while first creating the dockapp window. Now we check if _daContext has been initialized first, and if not, we initialize it.
This commit is contained in:
parent
0167a6b2a8
commit
ebae7f641b
|
@ -58,11 +58,7 @@ DAParseArguments(
|
|||
int i, j, size;
|
||||
int found = 0;
|
||||
|
||||
_daContext = DAContextInit();
|
||||
|
||||
_daContext->argc = argc;
|
||||
_daContext->argv = argv;
|
||||
_daContext->programName = argv[0];
|
||||
_daContext = DAContextInit(argc, argv);
|
||||
|
||||
size = (count + DEFAULT_OPTION_COUNT) * sizeof(DAProgramOption *);
|
||||
_daContext->options = malloc(size);
|
||||
|
@ -207,12 +203,16 @@ DAGetProgramName()
|
|||
*/
|
||||
|
||||
struct DAContext *
|
||||
DAContextInit(void)
|
||||
DAContextInit(int argc, char **argv)
|
||||
{
|
||||
struct DAContext *context = malloc(sizeof(struct DAContext));
|
||||
|
||||
memset(context, 0, sizeof(struct DAContext));
|
||||
|
||||
context->argc = argc;
|
||||
context->argv = argv;
|
||||
context->programName = argv[0];
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,6 @@ struct DAContext {
|
|||
};
|
||||
|
||||
|
||||
struct DAContext *DAContextInit(void);
|
||||
struct DAContext *DAContextInit(int argc, char **argv);
|
||||
void DAFreeContext(void);
|
||||
|
||||
|
|
|
@ -134,6 +134,9 @@ DACreateIcon(char *name, unsigned width, unsigned height, int argc, char **argv)
|
|||
unsigned long valueMask;
|
||||
char *resourceValue;
|
||||
|
||||
if (!_daContext)
|
||||
_daContext = DAContextInit(argc, argv);
|
||||
|
||||
_daContext->width = width;
|
||||
_daContext->height = height;
|
||||
|
||||
|
|
Loading…
Reference in a new issue